]> andersk Git - moira.git/blobdiff - server/startmoira.c
Diane Delgado's changes for a fixed table-locking order
[moira.git] / server / startmoira.c
index f3d85db36ef9f40fa02e38909249b323ba92effd..4bb8925c265849dfe6a9a44c415aeda1d8a4099e 100644 (file)
@@ -27,43 +27,10 @@ static char *rcsid_mr_starter_c = "$Header$";
 #include <moira_site.h>
 
 #define PROG   "moirad"
+char *whoami
 
 int rdpipe[2];
-char *sigdescr[] = {
-       0,
-       "hangup",
-       "interrupt",    
-       "quit",
-       "illegal instruction",
-       "trace/BPT trap",
-       "IOT trap",
-       "EMT trap",
-       "floating exception",
-       "kill",
-       "bus error",
-       "segmentation violation",
-       "bad system call",
-       "broken pipe",
-       "alarm clock",
-       "termination",
-       "urgent I/O condition",
-       "stopped",
-       "stopped",
-       "continued",
-       "child exited",
-       "stopped (tty input)",
-       "stopped (tty output)",
-       "I/O possible",
-       "cputime limit exceeded",
-       "filesize limit exceeded",
-       "virtual timer expired",
-       "profiling timer expired",
-       "window size changed",
-       "signal 29",
-       "user defined signal 1",
-       "user defined signal 2",
-       "signal 32"
-};
+extern char *sys_siglist[];
 
 cleanup()
 {
@@ -76,15 +43,17 @@ cleanup()
        
        while (wait3(&stat, WNOHANG, 0) > 0) {
                if (WIFEXITED(stat)) {
-                       if (stat.w_retcode)
+                       if (stat.w_retcode) {
                                sprintf(buf,
-                                       "exited with code %d\n",
+                                       "moirad exited with code %d\n",
                                        stat.w_retcode);
+                               send_zgram("startmoira", buf);
                }
                if (WIFSIGNALED(stat)) {
-                       sprintf(buf, "exited on %s signal%s\n",
-                               sigdescr[stat.w_termsig],
+                       sprintf(buf, "moirad exited on %s signal%s\n",
+                               sys_siglist[stat.w_termsig],
                                (stat.w_coredump?"; Core dumped":0));
+                       if(stat.w_coredump) send_zgram("startmoira", buf);
                }
                write(rdpipe[1], buf, strlen(buf));
                close(rdpipe[1]);
@@ -93,6 +62,8 @@ cleanup()
 }
 
 main(argc, argv)
+       int argc;
+       char **argv;
 {
        char buf[BUFSIZ];
        FILE *log, *prog;
@@ -103,6 +74,8 @@ main(argc, argv)
        
        int nfds = getdtablesize();
        
+       whoami = argv[0];
+
        setreuid(0);
        signal(SIGCHLD, cleanup);
        
@@ -119,7 +92,7 @@ main(argc, argv)
        }
        pipe(rdpipe);
        if (fork()) {
-               exit();
+               exit(0);
        }
        chdir("/");     
        close(0);
@@ -170,7 +143,7 @@ main(argc, argv)
                time(&foo);
                time_s = ctime(&foo)+4;
                time_s[strlen(time_s)-6]='\0';
-               fprintf(log, "%s <%d> %s", time_s, pid, buf);
+               fprintf(log, "%s %s", time_s, buf);
                fflush(log);
        } while (!done);
        exit(0);
This page took 0.043261 seconds and 4 git commands to generate.