1/* sinfo.c 2 Get information about 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_sinfo_rcsid[] = "$Id: sinfo.c,v 1.6 2002/03/05 19:10:42 ian Rel $"; 29#endif 30 31/* Get information about a particular system. We combine the 32 definitions for this system from each type of configuration file, 33 by passing what we have so far into each one. */ 34 35int 36uuconf_system_info (pglobal, zsystem, qsys) 37 pointer pglobal; 38 const char *zsystem; 39 struct uuconf_system *qsys; 40{ 41 struct sglobal *qglobal = (struct sglobal *) pglobal; 42 int iret; 43 boolean fgot; 44 45 fgot = FALSE; 46 47#if HAVE_TAYLOR_CONFIG 48 iret = _uuconf_itaylor_system_internal (qglobal, zsystem, qsys); 49 if (iret == UUCONF_SUCCESS) 50 fgot = TRUE; 51 else if (iret != UUCONF_NOT_FOUND) 52 return iret; 53#endif 54 55#if HAVE_V2_CONFIG 56 if (qglobal->qprocess->fv2) 57 { 58 struct uuconf_system *q; 59 struct uuconf_system sv2; 60 61 if (fgot) 62 q = &sv2; 63 else 64 q = qsys; 65 iret = _uuconf_iv2_system_internal (qglobal, zsystem, q); 66 if (iret == UUCONF_SUCCESS) 67 { 68 if (fgot) 69 { 70 iret = _uuconf_isystem_default (qglobal, qsys, &sv2, TRUE); 71 if (iret != UUCONF_SUCCESS) 72 return iret; 73 } 74 fgot = TRUE; 75 } 76 else if (iret != UUCONF_NOT_FOUND) 77 return iret; 78 } 79#endif 80 81#if HAVE_HDB_CONFIG 82 if (qglobal->qprocess->fhdb) 83 { 84 struct uuconf_system *q; 85 struct uuconf_system shdb; 86 87 if (fgot) 88 q = &shdb; 89 else 90 q = qsys; 91 iret = _uuconf_ihdb_system_internal (qglobal, zsystem, q); 92 if (iret == UUCONF_SUCCESS) 93 { 94 if (fgot) 95 { 96 iret = _uuconf_isystem_default (qglobal, qsys, &shdb, TRUE); 97 if (iret != UUCONF_SUCCESS) 98 return iret; 99 } 100 fgot = TRUE; 101 } 102 else if (iret != UUCONF_NOT_FOUND) 103 return iret; 104 } 105#endif 106 107 if (! fgot) 108 return UUCONF_NOT_FOUND; 109 110 return _uuconf_isystem_basic_default (qglobal, qsys); 111} 112