* For copying and distribution information, please see the file
* <mit-copyright.h>.
*
- * This program starts the sms server in a "clean" environment.
+ * This program starts the moira server in a "clean" environment.
* and then waits for it to exit.
*
*/
#ifndef lint
-static char *rcsid_sms_starter_c = "$Header$";
+static char *rcsid_mr_starter_c = "$Header$";
#endif lint
#include <mit-copyright.h>
#include <sys/wait.h>
#include <sys/signal.h>
#include <sys/ioctl.h>
-#include <sms_app.h>
+#include <moira_site.h>
-#define PROG "smsd"
+#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()
{
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]);
}
main(argc, argv)
+ int argc;
+ char **argv;
{
char buf[BUFSIZ];
FILE *log, *prog;
int nfds = getdtablesize();
+ whoami = argv[0];
+
setreuid(0);
signal(SIGCHLD, cleanup);
- sprintf(buf, "%s/sms.log", SMS_DIR);
+ sprintf(buf, "%s/moira.log", SMS_DIR);
logf = open(buf, O_CREAT|O_WRONLY|O_APPEND, 0640);
if (logf<0) {
perror(buf);
}
pipe(rdpipe);
if (fork()) {
- exit();
+ exit(0);
}
chdir("/");
close(0);
dup2(1,2);
for (i = 3; i <nfds; i++) close(i);
execl(buf, PROG, 0);
- perror("cannot run smsd");
+ perror("cannot run moirad");
exit(1);
}
if (pid<0) {
- perror("sms_starter");
+ perror("moira_starter");
exit(1);
}
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);