|
|
1.1 ! root 1: /* cmdfil.c ! 2: Read and parse commands from a file. ! 3: ! 4: Copyright (C) 1992 Ian Lance Taylor ! 5: ! 6: This file is part of the Taylor UUCP uuconf library. ! 7: ! 8: This library is free software; you can redistribute it and/or ! 9: modify it under the terms of the GNU Library General Public License ! 10: as published by the Free Software Foundation; either version 2 of ! 11: the License, or (at your option) any later version. ! 12: ! 13: This library 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: Library General Public License for more details. ! 17: ! 18: You should have received a copy of the GNU Library General Public ! 19: License along with this library; 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 "uucnfi.h" ! 27: ! 28: #if USE_RCS_ID ! 29: const char _uuconf_cmdfil_rcsid[] = "$Id: cmdfil.c,v 1.1 93/07/30 08:07:05 bin Exp Locker: bin $"; ! 30: #endif ! 31: ! 32: #include <errno.h> ! 33: ! 34: /* Read and parse commands from a file, updating uuconf_lineno as ! 35: appropriate. */ ! 36: ! 37: int ! 38: uuconf_cmd_file (pglobal, e, qtab, pinfo, pfiunknown, iflags, pblock) ! 39: pointer pglobal; ! 40: FILE *e; ! 41: const struct uuconf_cmdtab *qtab; ! 42: pointer pinfo; ! 43: int (*pfiunknown) P((pointer, int, char **, pointer, pointer)); ! 44: int iflags; ! 45: pointer pblock; ! 46: { ! 47: struct sglobal *qglobal = (struct sglobal *) pglobal; ! 48: boolean fcont; ! 49: char *zline; ! 50: size_t cline; ! 51: int iret; ! 52: ! 53: fcont = (iflags & UUCONF_CMDTABFLAG_BACKSLASH) != 0; ! 54: ! 55: zline = NULL; ! 56: cline = 0; ! 57: ! 58: iret = UUCONF_SUCCESS; ! 59: ! 60: qglobal->ilineno = 0; ! 61: ! 62: while ((fcont ! 63: ? _uuconf_getline (qglobal, &zline, &cline, e) ! 64: : getline (&zline, &cline, e)) > 0) ! 65: { ! 66: ++qglobal->ilineno; ! 67: ! 68: iret = uuconf_cmd_line (pglobal, zline, qtab, pinfo, pfiunknown, ! 69: iflags, pblock); ! 70: ! 71: if ((iret & UUCONF_CMDTABRET_KEEP) != 0) ! 72: { ! 73: iret &=~ UUCONF_CMDTABRET_KEEP; ! 74: ! 75: if (pblock != NULL) ! 76: { ! 77: if (uuconf_add_block (pblock, zline) != 0) ! 78: { ! 79: qglobal->ierrno = errno; ! 80: iret = (UUCONF_MALLOC_FAILED ! 81: | UUCONF_ERROR_ERRNO ! 82: | UUCONF_ERROR_LINENO); ! 83: break; ! 84: } ! 85: } ! 86: ! 87: zline = NULL; ! 88: cline = 0; ! 89: } ! 90: ! 91: if ((iret & UUCONF_CMDTABRET_EXIT) != 0) ! 92: { ! 93: iret &=~ UUCONF_CMDTABRET_EXIT; ! 94: if (iret != UUCONF_SUCCESS) ! 95: iret |= UUCONF_ERROR_LINENO; ! 96: break; ! 97: } ! 98: ! 99: iret = UUCONF_SUCCESS; ! 100: } ! 101: ! 102: return iret; ! 103: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.