|
|
1.1 ! root 1: /* splcmd.c ! 2: Spool a command. ! 3: ! 4: Copyright (C) 1991, 1992 Ian Lance Taylor ! 5: ! 6: This file is part of the Taylor UUCP package. ! 7: ! 8: This program is free software; you can redistribute it and/or ! 9: modify it under the terms of the GNU General Public License as ! 10: published by the Free Software Foundation; either version 2 of the ! 11: License, or (at your option) any later version. ! 12: ! 13: This program is distributed in the hope that it will be useful, but ! 14: WITHOUT ANY WARRANTY; without even the implied warranty of ! 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! 16: General Public License for more details. ! 17: ! 18: You should have received a copy of the GNU General Public License ! 19: along with this program; if not, write to the Free Software ! 20: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! 21: ! 22: The author of the program may be contacted at [email protected] or ! 23: c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254. ! 24: */ ! 25: ! 26: #include "uucp.h" ! 27: ! 28: #include "uudefs.h" ! 29: #include "uuconf.h" ! 30: #include "sysdep.h" ! 31: #include "system.h" ! 32: ! 33: #include <errno.h> ! 34: #include <ctype.h> ! 35: ! 36: /* Given a set of commands to execute for a remote system, create a ! 37: command file holding them. This creates a single command file ! 38: holding all the commands passed in. It returns a jobid. */ ! 39: ! 40: char * ! 41: zsysdep_spool_commands (qsys, bgrade, ccmds, pascmds) ! 42: const struct uuconf_system *qsys; ! 43: int bgrade; ! 44: int ccmds; ! 45: const struct scmd *pascmds; ! 46: { ! 47: char *z; ! 48: FILE *e; ! 49: int i; ! 50: const struct scmd *q; ! 51: char *zjobid; ! 52: ! 53: #if DEBUG > 0 ! 54: if (! UUCONF_GRADE_LEGAL (bgrade)) ! 55: ulog (LOG_FATAL, "Bad grade %d", bgrade); ! 56: #endif ! 57: ! 58: z = zscmd_file (qsys, bgrade); ! 59: if (z == NULL) ! 60: return NULL; ! 61: ! 62: e = esysdep_fopen (z, FALSE, FALSE, TRUE); ! 63: if (e == NULL) ! 64: { ! 65: ubuffree (z); ! 66: return NULL; ! 67: } ! 68: ! 69: for (i = 0, q = pascmds; i < ccmds; i++, q++) ! 70: { ! 71: switch (q->bcmd) ! 72: { ! 73: case 'S': ! 74: fprintf (e, "S %s %s %s -%s %s 0%o %s\n", q->zfrom, q->zto, ! 75: q->zuser, q->zoptions, q->ztemp, q->imode, ! 76: q->znotify == NULL ? (const char *) "" : q->znotify); ! 77: break; ! 78: case 'R': ! 79: fprintf (e, "R %s %s %s -%s\n", q->zfrom, q->zto, q->zuser, ! 80: q->zoptions); ! 81: break; ! 82: case 'X': ! 83: fprintf (e, "X %s %s %s -%s\n", q->zfrom, q->zto, q->zuser, ! 84: q->zoptions); ! 85: break; ! 86: case 'E': ! 87: fprintf (e, "E %s %s %s -%s %s 0%o %s 0 %s\n", q->zfrom, q->zto, ! 88: q->zuser, q->zoptions, q->ztemp, q->imode, ! 89: q->znotify, q->zcmd); ! 90: break; ! 91: default: ! 92: ulog (LOG_ERROR, ! 93: "zsysdep_spool_commands: Unrecognized type %d", ! 94: q->bcmd); ! 95: (void) fclose (e); ! 96: (void) remove (z); ! 97: ubuffree (z); ! 98: return NULL; ! 99: } ! 100: } ! 101: ! 102: if (fclose (e) != 0) ! 103: { ! 104: ulog (LOG_ERROR, "fclose: %s", strerror (errno)); ! 105: (void) remove (z); ! 106: ubuffree (z); ! 107: return NULL; ! 108: } ! 109: ! 110: zjobid = zsfile_to_jobid (qsys, z, bgrade); ! 111: if (zjobid == NULL) ! 112: (void) remove (z); ! 113: ubuffree (z); ! 114: return zjobid; ! 115: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.