diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 21:47:42 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 21:47:42 +0000 |
commit | 98a18b797c63ea9baab31768ed720ad32c0004e8 (patch) | |
tree | 2d8b0d9e845b332060ac668a429ef65ca4c47ed1 /mdk-stage1/slang/slproc.c | |
parent | 12cf594c688f3bc3e0b26d35305d5d6db7036fc4 (diff) | |
download | drakx-98a18b797c63ea9baab31768ed720ad32c0004e8.tar drakx-98a18b797c63ea9baab31768ed720ad32c0004e8.tar.gz drakx-98a18b797c63ea9baab31768ed720ad32c0004e8.tar.bz2 drakx-98a18b797c63ea9baab31768ed720ad32c0004e8.tar.xz drakx-98a18b797c63ea9baab31768ed720ad32c0004e8.zip |
i can compile slang and newt with dietlibc now
Diffstat (limited to 'mdk-stage1/slang/slproc.c')
-rw-r--r-- | mdk-stage1/slang/slproc.c | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/mdk-stage1/slang/slproc.c b/mdk-stage1/slang/slproc.c new file mode 100644 index 000000000..8b266f28f --- /dev/null +++ b/mdk-stage1/slang/slproc.c @@ -0,0 +1,155 @@ +/* Process specific system calls */ +/* Copyright (c) 1992, 1999, 2001 John E. Davis + * This file is part of the S-Lang library. + * + * You may distribute under the terms of either the GNU General Public + * License or the Perl Artistic License. + */ + +#include "slinclud.h" + +#ifdef HAVE_IO_H +# include <io.h> /* for chmod */ +#endif + +#ifdef HAVE_PROCESS_H +# include <process.h> /* for getpid */ +#endif + +#if defined(__BORLANDC__) +# include <dos.h> +#endif + +#include <sys/types.h> +#include <sys/stat.h> +#include <signal.h> +#include <time.h> + +#include <errno.h> + +#include "slang.h" +#include "_slang.h" + +#ifdef HAVE_KILL +static int kill_cmd (int *pid, int *sig) +{ + int ret; + + if (-1 == (ret = kill ((pid_t) *pid, *sig))) + _SLerrno_errno = errno; + return ret; +} +#endif + +static int getpid_cmd (void) +{ + return getpid (); +} + +#ifdef HAVE_GETPPID +static int getppid_cmd (void) +{ + return getppid (); +} +#endif + +#ifdef HAVE_GETGID +static int getgid_cmd (void) +{ + return getgid (); +} +#endif + +#ifdef HAVE_GETEGID +static int getegid_cmd (void) +{ + return getegid (); +} +#endif + +#ifdef HAVE_GETEUID +static int geteuid_cmd (void) +{ + return geteuid (); +} +#endif + +#ifdef HAVE_GETUID +static int getuid_cmd (void) +{ + return getuid (); +} +#endif + +#ifdef HAVE_SETGID +static int setgid_cmd (int *gid) +{ + if (0 == setgid (*gid)) + return 0; + _SLerrno_errno = errno; + return -1; +} +#endif + +#ifdef HAVE_SETPGID +static int setpgid_cmd (int *pid, int *pgid) +{ + if (0 == setpgid (*pid, *pgid)) + return 0; + _SLerrno_errno = errno; + return -1; +} +#endif + +#ifdef HAVE_SETUID +static int setuid_cmd (int *uid) +{ + if (0 == setuid (*uid)) + return 0; + _SLerrno_errno = errno; + return -1; +} +#endif + +static SLang_Intrin_Fun_Type Process_Name_Table[] = +{ + MAKE_INTRINSIC_0("getpid", getpid_cmd, SLANG_INT_TYPE), + +#ifdef HAVE_GETPPID + MAKE_INTRINSIC_0("getppid", getppid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_GETGID + MAKE_INTRINSIC_0("getgid", getgid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_GETEGID + MAKE_INTRINSIC_0("getegid", getegid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_GETEUID + MAKE_INTRINSIC_0("geteuid", geteuid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_GETUID + MAKE_INTRINSIC_0("getuid", getuid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_SETGID + MAKE_INTRINSIC_I("setgid", setgid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_SETPGID + MAKE_INTRINSIC_II("setpgid", setpgid_cmd, SLANG_INT_TYPE), +#endif +#ifdef HAVE_SETUID + MAKE_INTRINSIC_I("setuid", setuid_cmd, SLANG_INT_TYPE), +#endif + +#ifdef HAVE_KILL + MAKE_INTRINSIC_II("kill", kill_cmd, SLANG_INT_TYPE), +#endif + SLANG_END_INTRIN_FUN_TABLE +}; + +int SLang_init_posix_process (void) +{ + if ((-1 == SLadd_intrin_fun_table (Process_Name_Table, "__POSIX_PROCESS__")) + || (-1 == _SLerrno_init ())) + return -1; + return 0; +} |