1/* calout.c
2   Find callout login name and password for a system.
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_calout_rcsid[] = "$Id: calout.c,v 1.7 2002/03/05 19:10:42 ian Rel $";
29#endif
30
31#include <errno.h>
32
33/* Find callout login name and password for a system.  */
34
35/*ARGSUSED*/
36int
37uuconf_callout (pglobal, qsys, pzlog, pzpass)
38     pointer pglobal;
39     const struct uuconf_system *qsys;
40     char **pzlog;
41     char **pzpass;
42{
43#if HAVE_TAYLOR_CONFIG
44
45  return uuconf_taylor_callout (pglobal, qsys, pzlog, pzpass);
46
47#else /* ! HAVE_TAYLOR_CONFIG */
48
49  struct sglobal *qglobal = (struct sglobal *) pglobal;
50
51  *pzlog = NULL;
52  *pzpass = NULL;
53
54  if (qsys->uuconf_zcall_login == NULL
55      && qsys->uuconf_zcall_password == NULL)
56    return UUCONF_NOT_FOUND;
57
58  if ((qsys->uuconf_zcall_login != NULL
59       && strcmp (qsys->uuconf_zcall_login, "*") == 0)
60      || (qsys->uuconf_zcall_password != NULL
61	  && strcmp (qsys->uuconf_zcall_password, "*") == 0))
62    return UUCONF_NOT_FOUND;
63
64  if (qsys->uuconf_zcall_login != NULL)
65    {
66      *pzlog = strdup (qsys->uuconf_zcall_login);
67      if (*pzlog == NULL)
68	{
69	  qglobal->ierrno = errno;
70	  return UUCONF_MALLOC_FAILED | UUCONF_ERROR_ERRNO;
71	}
72    }
73
74  if (qsys->uuconf_zcall_password != NULL)
75    {
76      *pzpass = strdup (qsys->uuconf_zcall_password);
77      if (*pzpass == NULL)
78	{
79	  qglobal->ierrno = errno;
80	  if (*pzlog != NULL)
81	    {
82	      free ((pointer) *pzlog);
83	      *pzlog = NULL;
84	    }
85	  return UUCONF_MALLOC_FAILED | UUCONF_ERROR_ERRNO;
86	}
87    }
88
89  return UUCONF_SUCCESS;
90
91#endif /* ! HAVE_TAYLOR_CONFIG */
92}
93