diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index 4cf4ff42..9239edfe 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -784,7 +784,11 @@ NGIRCd_Init( bool NGIRCd_NoDaemon ) } /* New child process */ +#ifndef NeXT (void)setsid( ); +#else + setpgrp(0, getpid()); +#endif chdir( "/" ); /* Detach stdin, stdout and stderr */ diff --git a/src/portab/Makefile.am b/src/portab/Makefile.am index c48e67ad..125cc31a 100644 --- a/src/portab/Makefile.am +++ b/src/portab/Makefile.am @@ -14,7 +14,7 @@ AUTOMAKE_OPTIONS = ansi2knr noinst_LIBRARIES = libngportab.a -libngportab_a_SOURCES = strdup.c strlcpy.c strtok_r.c vsnprintf.c +libngportab_a_SOURCES = strdup.c strlcpy.c strtok_r.c vsnprintf.c waitpid.c check_PROGRAMS = portabtest diff --git a/src/portab/portab.h b/src/portab/portab.h index 83e11313..56d4249b 100644 --- a/src/portab/portab.h +++ b/src/portab/portab.h @@ -99,6 +99,14 @@ typedef unsigned char bool; #endif #endif +#ifdef NeXT +#define S_IRUSR 0000400 /* read permission, owner */ +#define S_IWUSR 0000200 /* write permission, owner */ +#define S_IRGRP 0000040 /* read permission, group */ +#define S_IROTH 0000004 /* read permission, other */ +#define ssize_t int +#endif + #undef GLOBAL #define GLOBAL diff --git a/src/portab/waitpid.c b/src/portab/waitpid.c new file mode 100644 index 00000000..0c169601 --- /dev/null +++ b/src/portab/waitpid.c @@ -0,0 +1,31 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * + * waitpid() implementation. Public domain. + * Written by Steven D. Blackford for the NeXT system. + * + */ + +#include "portab.h" + +#include "imp.h" +#include +#include +#include + +#include "exp.h" + +#ifndef HAVE_WAITPID + +GLOBAL int +waitpid(pid, stat_loc, options) +int pid, *stat_loc, options; +{ + for (;;) { + int wpid = wait(stat_loc); + if (wpid == pid || wpid == -1) + return wpid; + } +} + +#endif