mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
In various places in libast and libcmd there are preprocessor
fallbacks like this, for systems that don't define all the commonly
used errno value IDs:
#ifndef ENOSYS
#define ENOSYS EINVAL
#endif
and many others. It is better to have these all in one place so
they are not duplicated and we don't risk inconsistencies when
adding new code.
src/lib/libast/include/error.h includes the OS's <errno.h>, so it
is the logical file to move all these fallbacks into.
Quite possibly there is no remotely current system that needs any
of these, but they won't do any harm either.
Most files already use <error.h> directly or indirectly. Four
needed new #include <error.h> directives to use the fallbacks if
needed. The libast Mamfile is updated to make those files depend on
that header.
76 lines
2.2 KiB
C
76 lines
2.2 KiB
C
/***********************************************************************
|
|
* *
|
|
* This software is part of the ast package *
|
|
* Copyright (c) 1985-2011 AT&T Intellectual Property *
|
|
* and is licensed under the *
|
|
* Eclipse Public License, Version 1.0 *
|
|
* by AT&T Intellectual Property *
|
|
* *
|
|
* A copy of the License is available at *
|
|
* http://www.eclipse.org/org/documents/epl-v10.html *
|
|
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
|
|
* *
|
|
* Information and Software Systems Research *
|
|
* AT&T Research *
|
|
* Florham Park NJ *
|
|
* *
|
|
* Glenn Fowler <gsf@research.att.com> *
|
|
* David Korn <dgk@research.att.com> *
|
|
* Phong Vo <kpv@research.att.com> *
|
|
* *
|
|
***********************************************************************/
|
|
#pragma prototyped
|
|
|
|
#include <ast.h>
|
|
|
|
#if _lib_setpgid
|
|
|
|
NoN(setpgid)
|
|
|
|
#else
|
|
|
|
#include <error.h>
|
|
|
|
#if _lib_setpgrp2
|
|
#define setpgrp setpgrp2
|
|
#else
|
|
#if _lib_BSDsetpgrp
|
|
#define _lib_setpgrp2 1
|
|
#define setpgrp BSDsetpgrp
|
|
#else
|
|
#if _lib_wait3
|
|
#define _lib_setpgrp2 1
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if _lib_setpgrp2
|
|
extern int setpgrp(int, int);
|
|
#else
|
|
extern int setpgrp(void);
|
|
#endif
|
|
|
|
/*
|
|
* set process group id
|
|
*/
|
|
|
|
int
|
|
setpgid(pid_t pid, pid_t pgid)
|
|
{
|
|
#if _lib_setpgrp2
|
|
return(setpgrp(pid, pgid));
|
|
#else
|
|
#if _lib_setpgrp
|
|
int caller = getpid();
|
|
|
|
if ((pid == 0 || pid == caller) && (pgid == 0 || pgid == caller))
|
|
return(setpgrp());
|
|
errno = EINVAL;
|
|
#else
|
|
errno = ENOSYS;
|
|
#endif
|
|
return(-1);
|
|
#endif
|
|
}
|
|
|
|
#endif
|