From: danw Date: Sun, 29 Sep 1996 20:06:54 +0000 (+0000) Subject: startmoira now sends a zephyr to -c moira -i startmoira when moirad X-Git-Tag: MOIRA3_FINAL~26 X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/bee2d3fbd1e6af62c5d24611d4ada6e25a970315 startmoira now sends a zephyr to -c moira -i startmoira when moirad dumps core or exits with non-zero status. --- diff --git a/server/Imakefile b/server/Imakefile index 172fa5c2..36c38cf8 100644 --- a/server/Imakefile +++ b/server/Imakefile @@ -46,7 +46,11 @@ program(moirad, ${SRVOBJ},${MR_LIBDEP} ${GDB_LIBDEP},\ .././gdb/libmrgdb.a -lcom_err \ /mit/gdss/`machtype`/libgdss.a -lkrb -ldes -lhesiod \ ${SQL_LIB}, ${PROGDIR}) -program(startmoira, startmoira.o,,, ${PROGDIR}) +program(startmoira, startmoira.o,${MR_LIBDEP} ${GDB_LIBDEP},\ + -L/usr/athena/lib .././lib/libmoira.a -lzephyr \ + .././gdb/libmrgdb.a -lcom_err \ + /mit/gdss/`machtype`/libgdss.a -lkrb -ldes -lhesiod \ + ${SQL_LIB}, ${PROGDIR}) library_obj_rule() install_library_target(mrglue,$(GLUOBJS),$(SRCS),) diff --git a/server/startmoira.c b/server/startmoira.c index 93561868..4bb8925c 100644 --- a/server/startmoira.c +++ b/server/startmoira.c @@ -27,6 +27,7 @@ static char *rcsid_mr_starter_c = "$Header$"; #include #define PROG "moirad" +char *whoami int rdpipe[2]; extern char *sys_siglist[]; @@ -42,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", + 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]); @@ -59,6 +62,8 @@ cleanup() } main(argc, argv) + int argc; + char **argv; { char buf[BUFSIZ]; FILE *log, *prog; @@ -69,6 +74,8 @@ main(argc, argv) int nfds = getdtablesize(); + whoami = argv[0]; + setreuid(0); signal(SIGCHLD, cleanup);