1/* tval.c
2   Validate a login name for a system using Taylor UUCP 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
21
22   The author of the program may be contacted at ian@airs.com.
23   */
24
25#include "uucnfi.h"
26
27#if USE_RCS_ID
28const char _uuconf_tval_rcsid[] = "$Id: tval.c,v 1.6 2002/03/05 19:10:43 ian Rel $";
29#endif
30
31/* Validate a login name for a system using Taylor UUCP configuration
32   files.  This assumes that the zcalled_login field is either NULL or
33   "ANY".  If makes sure that the login name does not appear in some
34   other "called-login" command listing systems not including this
35   one.  */
36
37int
38uuconf_taylor_validate (pglobal, qsys, zlogin)
39     pointer pglobal;
40     const struct uuconf_system *qsys;
41     const char *zlogin;
42{
43  struct sglobal *qglobal = (struct sglobal *) pglobal;
44  struct svalidate *q;
45
46  if (! qglobal->qprocess->fread_syslocs)
47    {
48      int iret;
49
50      iret = _uuconf_iread_locations (qglobal);
51      if (iret != UUCONF_SUCCESS)
52	return iret;
53    }
54
55  for (q = qglobal->qprocess->qvalidate; q != NULL; q = q->qnext)
56    {
57      if (strcmp (q->zlogname, zlogin) == 0)
58	{
59	  char **pz;
60
61	  for (pz = q->pzmachines; *pz != NULL; pz++)
62	    if (strcmp (*pz, qsys->uuconf_zname) == 0)
63	      return UUCONF_SUCCESS;
64
65	  return UUCONF_NOT_FOUND;
66	}
67    }
68
69  return UUCONF_SUCCESS;
70}
71