|
|
1.1 root 1: /* hlocnm.c
2: Get the local name to use from the HDB 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_hlocnm_rcsid[] = "$Id: hlocnm.c,v 1.1 93/07/30 08:07:15 bin Exp Locker: bin $";
30: #endif
31:
32: #include <errno.h>
33:
34: /* Get the local name to use, based on the login name, from the HDB
35: configuration files. */
36:
37: int
38: uuconf_hdb_login_localname (pglobal, zlogin, pzname)
39: pointer pglobal;
40: const char *zlogin;
41: char **pzname;
42: {
43: struct sglobal *qglobal = (struct sglobal *) pglobal;
44: struct shpermissions *qperm;
45:
46: if (! qglobal->qprocess->fhdb_read_permissions)
47: {
48: int iret;
49:
50: iret = _uuconf_ihread_permissions (qglobal);
51: if (iret != UUCONF_SUCCESS)
52: return iret;
53: }
54:
55: for (qperm = qglobal->qprocess->qhdb_permissions;
56: qperm != NULL;
57: qperm = qperm->qnext)
58: {
59: if (qperm->zmyname != NULL
60: && qperm->zmyname != (char *) &_uuconf_unset
61: && qperm->pzlogname != NULL
62: && qperm->pzlogname != (char **) &_uuconf_unset)
63: {
64: char **pz;
65:
66: for (pz = qperm->pzlogname; *pz != NULL; pz++)
67: {
68: if (strcmp (*pz, zlogin) == 0)
69: {
70: *pzname = strdup (qperm->zmyname);
71: if (*pzname == NULL)
72: {
73: qglobal->ierrno = errno;
74: return UUCONF_MALLOC_FAILED | UUCONF_ERROR_ERRNO;
75: }
76: return UUCONF_SUCCESS;
77: }
78: }
79: }
80: }
81:
82: *pzname = NULL;
83: return UUCONF_NOT_FOUND;
84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.