Annotation of coherent/g/usr/lib/uucp/tay104/uuconf/diacod.c, revision 1.1.1.1

1.1       root        1: /* diacod.c
                      2:    Translate a dialcode.
                      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_diacod_rcsid[] = "$Id: diacod.c,v 1.1 93/07/30 08:07:07 bin Exp Locker: bin $";
                     30: #endif
                     31: 
                     32: #include <errno.h>
                     33: 
                     34: static int idcode P((pointer pglobal, int argc, char **argv,
                     35:                     pointer pinfo, pointer pvar));
                     36: 
                     37: /* Get the name of the UUCP log file.  */
                     38: 
                     39: int
                     40: uuconf_dialcode (pglobal, zdial, pznum)
                     41:      pointer pglobal;
                     42:      const char *zdial;
                     43:      char **pznum;
                     44: {
                     45:   struct sglobal *qglobal = (struct sglobal *) pglobal;
                     46:   struct uuconf_cmdtab as[2];
                     47:   char **pz;
                     48:   int iret;
                     49: 
                     50:   as[0].uuconf_zcmd = zdial;
                     51:   as[0].uuconf_itype = UUCONF_CMDTABTYPE_FN | 0;
                     52:   as[0].uuconf_pvar = (pointer) pznum;
                     53:   as[0].uuconf_pifn = idcode;
                     54: 
                     55:   as[1].uuconf_zcmd = NULL;
                     56: 
                     57:   *pznum = NULL;
                     58: 
                     59:   iret = UUCONF_SUCCESS;
                     60: 
                     61:   for (pz = qglobal->qprocess->pzdialcodefiles; *pz != NULL; pz++)
                     62:     {
                     63:       FILE *e;
                     64: 
                     65:       e = fopen (*pz, "r");
                     66:       if (e == NULL)
                     67:        {
                     68:          if (FNO_SUCH_FILE ())
                     69:            continue;
                     70:          qglobal->ierrno = errno;
                     71:          iret = UUCONF_FOPEN_FAILED | UUCONF_ERROR_ERRNO;
                     72:          break;
                     73:        }
                     74: 
                     75:       iret = uuconf_cmd_file (pglobal, e, as, (pointer) NULL,
                     76:                              (uuconf_cmdtabfn) NULL, 0, (pointer) NULL);
                     77:       (void) fclose (e);
                     78: 
                     79:       if (iret != UUCONF_SUCCESS || *pznum != NULL)
                     80:        break;
                     81:     }
                     82: 
                     83:   if (iret != UUCONF_SUCCESS)
                     84:     {
                     85:       qglobal->zfilename = *pz;
                     86:       iret |= UUCONF_ERROR_FILENAME;
                     87:     }
                     88:   else if (*pznum == NULL)
                     89:     iret = UUCONF_NOT_FOUND;
                     90: 
                     91:   return iret;
                     92: }
                     93: 
                     94: /* This is called if the dialcode is found.  It copies the number into
                     95:    the heap and gets out of reading the file.  */
                     96: 
                     97: /*ARGSUSED*/
                     98: static int
                     99: idcode (pglobal, argc, argv, pvar, pinfo)
                    100:      pointer pglobal;
                    101:      int argc;
                    102:      char **argv;
                    103:      pointer pvar;
                    104:      pointer pinfo;
                    105: {
                    106:   struct sglobal *qglobal = (struct sglobal *) pglobal;
                    107:   char **pznum = (char **) pvar;
                    108: 
                    109:   if (argc == 1)
                    110:     {
                    111:       *pznum = malloc (1);
                    112:       if (*pznum != NULL)
                    113:        **pznum = '\0';
                    114:     }
                    115:   else if (argc == 2)
                    116:     *pznum = strdup (argv[1]);
                    117:   else
                    118:     return UUCONF_SYNTAX_ERROR | UUCONF_CMDTABRET_EXIT;
                    119: 
                    120:   if (*pznum == NULL)
                    121:     {
                    122:       qglobal->ierrno = errno;
                    123:       return (UUCONF_MALLOC_FAILED
                    124:              | UUCONF_ERROR_ERRNO
                    125:              | UUCONF_CMDTABRET_EXIT);
                    126:     }
                    127: 
                    128:   return UUCONF_CMDTABRET_EXIT;
                    129: }

unix.superglobalmegacorp.com

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