(linenum→info "unix/slp.c:2238")

glibc/2.7/nss/XXX-lookup.c

    1: /* Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3:    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #include "nsswitch.h"
   21: 
   22: /*******************************************************************\
   23: |* Here we assume one symbol to be defined:                        *|
   24: |*                                                                 *|
   25: |* DATABASE_NAME - name of the database the function accesses      *|
   26: |*                 (e.g., hosts, services, ...)                        *|
   27: |*                                                                 *|
   28: |* One additional symbol may optionally be defined:                *|
   29: |*                                                                 *|
   30: |* ALTERNATE_NAME - name of another service which is examined in   *|
   31: |*                  case DATABASE_NAME is not found                *|
   32: |*                                                                 *|
   33: |* DEFAULT_CONFIG - string for default conf (e.g. "dns files")     *|
   34: |*                                                                 *|
   35: \*******************************************************************/
   36: 
   37: #define DB_LOOKUP_FCT CONCAT3_1 (__nss_, DATABASE_NAME, _lookup)
   38: #define CONCAT3_1(Pre, Name, Post) CONCAT3_2 (Pre, Name, Post)
   39: #define CONCAT3_2(Pre, Name, Post) Pre##Name##Post
   40: 
   41: #define DATABASE_NAME_SYMBOL CONCAT3_1 (__nss_, DATABASE_NAME, _database)
   42: #define DATABASE_NAME_STRING STRINGIFY1 (DATABASE_NAME)
   43: #define STRINGIFY1(Name) STRINGIFY2 (Name)
   44: #define STRINGIFY2(Name) #Name
   45: 
   46: #ifdef ALTERNATE_NAME
   47: #define ALTERNATE_NAME_STRING STRINGIFY1 (ALTERNATE_NAME)
   48: #else
   49: #define ALTERNATE_NAME_STRING NULL
   50: #endif
   51: 
   52: #ifndef DEFAULT_CONFIG
   53: #define DEFAULT_CONFIG NULL
   54: #endif
   55: 
   56: service_user *DATABASE_NAME_SYMBOL attribute_hidden;
   57: 
   58: extern int DB_LOOKUP_FCT (service_user **ni, const char *fct_name,
   59:                           void **fctp) internal_function;
   60: libc_hidden_proto (DB_LOOKUP_FCT)
   61: 
   62: int
   63: internal_function
   64: DB_LOOKUP_FCT (service_user **ni, const char *fct_name, void **fctp)
   65: {
   66:   if (DATABASE_NAME_SYMBOL == NULL
   67:       && __nss_database_lookup (DATABASE_NAME_STRING, ALTERNATE_NAME_STRING,
   68:                                 DEFAULT_CONFIG, &DATABASE_NAME_SYMBOL) < 0)
   69:     return -1;
   70: 
   71:   *ni = DATABASE_NAME_SYMBOL;
   72: 
   73:   return __nss_lookup (ni, fct_name, fctp);
   74: }
   75: libc_hidden_def (DB_LOOKUP_FCT)
Syntax (Markdown)