1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00
cde/src/lib/libast/comp/setpgid.c
Martijn Dekker 71bfe0283d libast: consolidate errno ID fallbacks into error.h
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.
2021-03-22 14:55:16 +00:00

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