X-Git-Url: http://gitweb/?a=blobdiff_plain;f=start-stop-daemon%2Fstart-stop-daemon.c;h=813575044d528bb73d1b60f1c502d02e662ed1f5;hb=92f49cf55f28c205b560693205d873863ae29b17;hp=c844f2e946c5237f7d07f5f8e3eae4f657596e0e;hpb=487cc3be34e100294ceab5dd90d7a13d169a29a5;p=crossrootfs.git diff --git a/start-stop-daemon/start-stop-daemon.c b/start-stop-daemon/start-stop-daemon.c index c844f2e..8135750 100644 --- a/start-stop-daemon/start-stop-daemon.c +++ b/start-stop-daemon/start-stop-daemon.c @@ -25,26 +25,33 @@ #include -#if defined(linux) -# define OSLinux +#if defined(__linux__) +# define OS_Linux #elif defined(__GNU__) -# define OSHurd -#elif defined(__sun) -# define OSsunos -#elif defined(OPENBSD) || defined(__OpenBSD__) -# define OSOpenBSD -#elif defined(hpux) -# define OShpux +# define OS_Hurd #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -# define OSFreeBSD +# define OS_FreeBSD #elif defined(__NetBSD__) -# define OSNetBSD +# define OS_NetBSD +#elif defined(__OpenBSD__) +# define OS_OpenBSD #elif defined(__DragonFly__) -# define OSDragonFlyBSD +# define OS_DragonFlyBSD +#elif defined(__APPLE__) && defined(__MACH__) +# define OS_Darwin +#elif defined(__sun) +# define OS_Solaris +#elif defined(_AIX) +# define OS_AIX +#elif defined(__hpux) +# define OS_HPUX #else # error Unknown architecture - cannot build start-stop-daemon #endif +/* NetBSD needs this to expose struct proc. */ +#define _KMEMUSER 1 + #ifdef HAVE_SYS_PARAM_H #include #endif @@ -54,6 +61,9 @@ #ifdef HAVE_SYS_SYSCTL_H #include #endif +#ifdef HAVE_SYS_PROCFS_H +#include +#endif #ifdef HAVE_SYS_PROC_H #include #endif @@ -98,21 +108,25 @@ #include #endif -#if defined(OSHurd) +#if defined(OS_Hurd) #include #include #endif +#if defined(OS_Darwin) +#include +#endif + #ifdef HAVE_KVM_H #include -#if defined(OSFreeBSD) +#if defined(OS_FreeBSD) #define KVM_MEMFILE "/dev/null" #else #define KVM_MEMFILE NULL #endif #endif -#ifdef _POSIX_PRIORITY_SCHEDULING +#if defined(_POSIX_PRIORITY_SCHEDULING) && _POSIX_PRIORITY_SCHEDULING > 0 #include #else #define SCHED_OTHER -1 @@ -120,20 +134,23 @@ #define SCHED_RR -1 #endif -#if defined(OSLinux) +#if defined(OS_Linux) /* This comes from TASK_COMM_LEN defined in Linux' include/linux/sched.h. */ #define PROCESS_NAME_SIZE 15 -#elif defined(OSsunos) +#elif defined(OS_Solaris) #define PROCESS_NAME_SIZE 15 -#elif defined(OSDarwin) +#elif defined(OS_Darwin) #define PROCESS_NAME_SIZE 16 -#elif defined(OSNetBSD) +#elif defined(OS_AIX) +/* This comes from PRFNSZ defined in AIX's . */ #define PROCESS_NAME_SIZE 16 -#elif defined(OSOpenBSD) +#elif defined(OS_NetBSD) #define PROCESS_NAME_SIZE 16 -#elif defined(OSFreeBSD) +#elif defined(OS_OpenBSD) +#define PROCESS_NAME_SIZE 16 +#elif defined(OS_FreeBSD) #define PROCESS_NAME_SIZE 19 -#elif defined(OSDragonFlyBSD) +#elif defined(OS_DragonFlyBSD) /* On DragonFlyBSD MAXCOMLEN expands to 16. */ #define PROCESS_NAME_SIZE MAXCOMLEN #endif @@ -200,13 +217,13 @@ static char *startas = NULL; static pid_t match_pid = -1; static pid_t match_ppid = -1; static const char *pidfile = NULL; -static char what_stop[1024]; +static char *what_stop = NULL; static const char *progname = ""; static int nicelevel = 0; static int umask_value = -1; static struct stat exec_stat; -#if defined(OSHurd) +#if defined(OS_Hurd) static struct proc_stat_list *procset = NULL; #endif @@ -420,10 +437,10 @@ wait_for_child(pid_t pid) fatal("error waiting for child"); if (WIFEXITED(status)) { - int err = WEXITSTATUS(status); + int ret = WEXITSTATUS(status); - if (err != 0) - fatal("child returned error exit status %d", err); + if (ret != 0) + fatal("child returned error exit status %d", ret); } else if (WIFSIGNALED(status)) { int signo = WTERMSIG(status); @@ -545,61 +562,75 @@ static void usage(void) { printf( -"Usage: start-stop-daemon [