# /* tcom.c */ /* EMACS_MODES: c !fill */ /* Send a command to the tftp server */ #include #include #include "srvr_cmds.h" #define LINSIZ 128 char *lockfile = "/tftpd/lock"; char *tftplog = "/tftpd/slog"; char *showlog = "/bin/showlog"; main (argc, argv) int argc; char **argv; { FILE *cmdfd, *lockfd; char line[LINSIZ]; int i, pid, child; if ((lockfd = fopen (lockfile, "r")) == NULL) { printf ("tftp daemon not alive"); exit (1); } fscanf (lockfd, "%d", &pid); fclose (lockfd); if (argc > 1) { /* run once? */ if ((cmdfd = fopen (CMD_FILE, "w")) == NULL) { printf ("can't open command file\n"); exit (1); } for (i = 1; i < argc; i++) { fputs (argv[i], cmdfd); putc (' ', cmdfd); } fclose (cmdfd); kill (pid, CMD_SIG); } else { /* run interactively */ if ((child = fork ()) == 0) /* child */ execl (showlog, showlog, tftplog, 0); printf ("(Type EOF to exit)\n"); while (gets (line, LINSIZ) != NULL) { if ((cmdfd = fopen (CMD_FILE, "w")) == NULL) { printf ("can't open command file\n"); exit (1); } fputs (line, cmdfd); fclose (cmdfd); kill (pid, CMD_SIG); } kill (child, SIGINT); /* punt child */ } }