|
|
1.1 root 1: /* vsnams.c
2: Get all known system names from the V2 configuration files.
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_vsnams_rcsid[] = "$Id: vsnams.c,v 1.1 93/07/30 08:08:23 bin Exp Locker: bin $";
30: #endif
31:
32: #include <errno.h>
33:
34: /* Get all the system names from the V2 L.sys file. This code does
35: not support aliases, although some V2 versions do have an L-aliases
36: file. */
37:
38: /*ARGSUSED*/
39: int
40: uuconf_v2_system_names (pglobal, ppzsystems, falias)
41: pointer pglobal;
42: char ***ppzsystems;
43: int falias;
44: {
45: struct sglobal *qglobal = (struct sglobal *) pglobal;
46: FILE *e;
47: int iret;
48: char *zline;
49: size_t cline;
50:
51: *ppzsystems = NULL;
52:
53: e = fopen (qglobal->qprocess->zv2systems, "r");
54: if (e == NULL)
55: {
56: if (FNO_SUCH_FILE ())
57: return _uuconf_iadd_string (qglobal, (char *) NULL, FALSE, FALSE,
58: ppzsystems, (pointer) NULL);
59: qglobal->ierrno = errno;
60: qglobal->zfilename = qglobal->qprocess->zv2systems;
61: return (UUCONF_FOPEN_FAILED
62: | UUCONF_ERROR_ERRNO
63: | UUCONF_ERROR_FILENAME);
64: }
65:
66: qglobal->ilineno = 0;
67: iret = UUCONF_SUCCESS;
68:
69: zline = NULL;
70: cline = 0;
71: while (getline (&zline, &cline, e) > 0)
72: {
73: char *zname;
74:
75: ++qglobal->ilineno;
76:
77: /* Skip leading whitespace to get to the system name. Then cut
78: the system name off at the first whitespace, comment, or
79: newline. */
80: zname = zline + strspn (zline, " \t");
81: zname[strcspn (zname, " \t#\n")] = '\0';
82: if (*zname == '\0')
83: continue;
84:
85: iret = _uuconf_iadd_string (qglobal, zname, TRUE, TRUE, ppzsystems,
86: (pointer) NULL);
87: if (iret != UUCONF_SUCCESS)
88: break;
89: }
90:
91: (void) fclose (e);
92: if (zline != NULL)
93: free ((pointer) zline);
94:
95: if (iret != UUCONF_SUCCESS)
96: {
97: qglobal->zfilename = qglobal->qprocess->zv2systems;
98: return iret | UUCONF_ERROR_FILENAME | UUCONF_ERROR_LINENO;
99: }
100:
101: if (*ppzsystems == NULL)
102: iret = _uuconf_iadd_string (qglobal, (char *) NULL, FALSE, FALSE,
103: ppzsystems, (pointer) NULL);
104:
105: return iret;
106: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.