|
|
1.1 ! root 1: /* jobid.c ! 2: Convert file names to jobids and vice versa. ! 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 "uuconf.h" ! 29: #include "uudefs.h" ! 30: #include "sysdep.h" ! 31: #include "system.h" ! 32: ! 33: /* Translate a file name and an associated system into a job id. ! 34: These job ids are used by uustat. We use the system name attached ! 35: to the grade and sequence number. This won't work correctly if the ! 36: file name was actually created by some other version of uucp that ! 37: uses a different length for the sequence number. Too bad. */ ! 38: ! 39: char * ! 40: zsfile_to_jobid (qsys, zfile, bgrade) ! 41: const struct uuconf_system *qsys; ! 42: const char *zfile; ! 43: int bgrade; ! 44: { ! 45: size_t clen; ! 46: char *zret; ! 47: ! 48: clen = strlen (qsys->uuconf_zname); ! 49: zret = zbufalc (clen + CSEQLEN + 2); ! 50: memcpy (zret, qsys->uuconf_zname, clen); ! 51: zret[clen] = bgrade; ! 52: memcpy (zret + clen + 1, zfile + strlen (zfile) - CSEQLEN, CSEQLEN + 1); ! 53: return zret; ! 54: } ! 55: ! 56: /* Turn a job id back into a file name. */ ! 57: ! 58: char * ! 59: zsjobid_to_file (zid, pzsystem, pbgrade) ! 60: const char *zid; ! 61: char **pzsystem; ! 62: char *pbgrade; ! 63: { ! 64: size_t clen; ! 65: const char *zend; ! 66: char *zsys; ! 67: char abname[CSEQLEN + 11]; ! 68: char *zret; ! 69: ! 70: clen = strlen (zid); ! 71: if (clen <= CSEQLEN) ! 72: { ! 73: ulog (LOG_ERROR, "%s: Bad job id", zid); ! 74: return NULL; ! 75: } ! 76: ! 77: zend = zid + clen - CSEQLEN - 1; ! 78: ! 79: zsys = zbufalc (clen - CSEQLEN); ! 80: memcpy (zsys, zid, clen - CSEQLEN - 1); ! 81: zsys[clen - CSEQLEN - 1] = '\0'; ! 82: ! 83: /* This must correspond to zsfile_name. */ ! 84: #if ! SPOOLDIR_TAYLOR ! 85: sprintf (abname, "C.%.7s%s", zsys, zend); ! 86: #else ! 87: sprintf (abname, "C.%s", zend); ! 88: #endif ! 89: ! 90: zret = zsfind_file (abname, zsys, *zend); ! 91: ! 92: if (zret != NULL && pzsystem != NULL) ! 93: *pzsystem = zsys; ! 94: else ! 95: ubuffree (zsys); ! 96: ! 97: if (pbgrade != NULL) ! 98: *pbgrade = *zend; ! 99: ! 100: return zret; ! 101: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.