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

glibc/2.7/nscd/dbg_log.c

    1: /* Copyright (c) 1998, 2000, 2004, 2005 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3:    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
    4: 
    5:    This program is free software; you can redistribute it and/or modify
    6:    it under the terms of the GNU General Public License as published
    7:    by the Free Software Foundation; version 2 of the License, or
    8:    (at your option) any later version.
    9: 
   10:    This program 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
   13:    GNU General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU General Public License
   16:    along with this program; if not, write to the Free Software Foundation,
   17:    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
   18: 
   19: #include <stdarg.h>
   20: #include <stdio.h>
   21: #include <string.h>
   22: #include <syslog.h>
   23: #include <unistd.h>
   24: #include "dbg_log.h"
   25: #include "nscd.h"
   26: 
   27: /* if in debug mode and we have a debug file, we write the messages to it,
   28:    if in debug mode and no debug file, we write the messages to stderr,
   29:    else to syslog.  */
   30: 
   31: static char *logfilename;
   32: FILE *dbgout;
   33: int debug_level;
   34: 
   35: void
   36: set_logfile (const char *logfile)
   37: {
   38:   logfilename = strdup (logfile);
   39: }
   40: 
   41: int
   42: init_logfile (void)
   43: {
   44:   if (logfilename)
   45:     {
   46:       dbgout = fopen64 (logfilename, "a");
   47:       return dbgout == NULL ? 0 : 1;
   48:     }
   49:   return 1;
   50: }
   51: 
   52: void
   53: dbg_log (const char *fmt,...)
   54: {
   55:   va_list ap;
   56:   char msg[512], msg2[512];
   57: 
   58:   va_start (ap, fmt);
   59:   vsnprintf (msg2, sizeof (msg), fmt, ap);
   60: 
   61:   if (debug_level > 0)
   62:     {
   63:       snprintf (msg, sizeof (msg), "%d: %s%s", getpid (), msg2,
   64:                 msg2[strlen (msg2) - 1] == '\n' ? "" : "\n");
   65:       if (dbgout)
   66:         {
   67:           fputs (msg, dbgout);
   68:           fflush (dbgout);
   69:         }
   70:       else
   71:         fputs (msg, stderr);
   72:     }
   73:   else
   74:     syslog (LOG_NOTICE, "%d %s", getpid (), msg2);
   75: 
   76:   va_end (ap);
   77: }
Syntax (Markdown)