Annotation of coherent/g/usr/lib/uucp/tay104/unix/splcmd.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.