Annotation of coherent/g/usr/lib/uucp/tay104/util.c, revision 1.1

1.1     ! root        1: /* util.c
        !             2:    A couple of UUCP utility functions.
        !             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: #if USE_RCS_ID
        !            29: const char util_rcsid[] = "$Id: util.c,v 1.1 93/07/30 07:54:30 bin Exp Locker: bin $";
        !            30: #endif
        !            31: 
        !            32: #include <ctype.h>
        !            33: 
        !            34: #include "uudefs.h"
        !            35: #include "uuconf.h"
        !            36: #include "system.h"
        !            37: 
        !            38: /* Get information for an unknown system.  This will leave the name
        !            39:    allocated on the heap.  We could fix this by breaking the
        !            40:    abstraction and adding the name to qsys->palloc.  It makes sure the
        !            41:    name is not too long, but takes no other useful action.  */
        !            42: 
        !            43: boolean
        !            44: funknown_system (puuconf, zsystem, qsys)
        !            45:      pointer puuconf;
        !            46:      const char *zsystem;
        !            47:      struct uuconf_system *qsys;
        !            48: {
        !            49:   char *z;
        !            50:   int iuuconf;
        !            51: 
        !            52:   if (strlen (zsystem) <= cSysdep_max_name_len)
        !            53:     z = zbufcpy (zsystem);
        !            54:   else
        !            55:     {
        !            56:       char **pznames, **pz;
        !            57:       boolean ffound;
        !            58: 
        !            59:       z = zbufalc (cSysdep_max_name_len + 1);
        !            60:       memcpy (z, zsystem, cSysdep_max_name_len);
        !            61:       z[cSysdep_max_name_len] = '\0';
        !            62: 
        !            63:       iuuconf = uuconf_system_names (puuconf, &pznames, TRUE);
        !            64:       if (iuuconf != UUCONF_SUCCESS)
        !            65:        ulog_uuconf (LOG_FATAL, puuconf, iuuconf);
        !            66: 
        !            67:       ffound = FALSE;
        !            68:       for (pz = pznames; *pz != NULL; pz++)
        !            69:        {
        !            70:          if (strcmp (*pz, z) == 0)
        !            71:            ffound = TRUE;
        !            72:          xfree ((pointer) *pz);
        !            73:        }
        !            74:       xfree ((pointer) pznames);
        !            75: 
        !            76:       if (ffound)
        !            77:        {
        !            78:          ubuffree (z);
        !            79:          return FALSE;
        !            80:        }
        !            81:     }
        !            82: 
        !            83:   iuuconf = uuconf_system_unknown (puuconf, qsys);
        !            84:   if (iuuconf == UUCONF_NOT_FOUND)
        !            85:     {
        !            86:       ubuffree (z);
        !            87:       return FALSE;
        !            88:     }
        !            89:   else if (iuuconf != UUCONF_SUCCESS)
        !            90:     ulog_uuconf (LOG_FATAL, puuconf, iuuconf);
        !            91: 
        !            92:   for (; qsys != NULL; qsys = qsys->uuconf_qalternate)
        !            93:     qsys->uuconf_zname = z;
        !            94: 
        !            95:   return TRUE;
        !            96: }
        !            97: 
        !            98: /* See whether a file is in a directory list, and make sure the user
        !            99:    has appropriate access.  */
        !           100: 
        !           101: boolean
        !           102: fin_directory_list (zfile, pzdirs, zpubdir, fcheck, freadable, zuser)
        !           103:      const char *zfile;
        !           104:      char **pzdirs;
        !           105:      const char *zpubdir;
        !           106:      boolean fcheck;
        !           107:      boolean freadable;
        !           108:      const char *zuser;
        !           109: {
        !           110:   boolean fmatch;
        !           111:   char **pz;
        !           112: 
        !           113:   fmatch = FALSE;
        !           114: 
        !           115:   for (pz = pzdirs; *pz != NULL; pz++)
        !           116:     {
        !           117:       char *zuse;
        !           118: 
        !           119:       if (pz[0][0] == '!')
        !           120:        {
        !           121:          zuse = zsysdep_local_file (*pz + 1, zpubdir);
        !           122:          if (zuse == NULL)
        !           123:            return FALSE;
        !           124: 
        !           125:          if (fsysdep_in_directory (zfile, zuse, FALSE,
        !           126:                                    FALSE, (const char *) NULL))
        !           127:            fmatch = FALSE;
        !           128:        }
        !           129:       else
        !           130:        {
        !           131:          zuse = zsysdep_local_file (*pz, zpubdir);
        !           132:          if (zuse == NULL)
        !           133:            return FALSE;
        !           134: 
        !           135:          if (fsysdep_in_directory (zfile, zuse, fcheck,
        !           136:                                    freadable, zuser))
        !           137:            fmatch = TRUE;
        !           138:        }
        !           139: 
        !           140:       ubuffree (zuse);
        !           141:     }
        !           142: 
        !           143:   return fmatch;
        !           144: }

unix.superglobalmegacorp.com

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