X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=nscd%2Fdbg_log.c;h=5e192c97dd8c093b83d7e19169ded19c134977c1;hp=37065e446ecd582b847efeba7904f3663ff386b0;hb=4b69b20a6f55e974e80e2eff97f0c79257673d5e;hpb=ced47921d62c5fc27687bc4df0ab77418b8a3466 diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c index 37065e446e..5e192c97dd 100644 --- a/nscd/dbg_log.c +++ b/nscd/dbg_log.c @@ -1,24 +1,24 @@ -/* Copyright (c) 1998 Free Software Foundation, Inc. +/* Copyright (c) 1998, 2000, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; version 2 of the License, or + (at your option) any later version. - The GNU C Library is distributed in the hope that it will be useful, + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include +#include #include #include #include "dbg_log.h" @@ -28,14 +28,25 @@ if in debug mode and no debug file, we write the messages to stderr, else to syslog. */ -FILE *dbgout = NULL; -int debug_flag = 0; +static char *logfilename; +FILE *dbgout; +int debug_level; -int +void set_logfile (const char *logfile) { - dbgout = fopen (logfile, "a"); - return dbgout == NULL ? 0 : 1; + logfilename = strdup (logfile); +} + +int +init_logfile (void) +{ + if (logfilename) + { + dbgout = fopen64 (logfilename, "a"); + return dbgout == NULL ? 0 : 1; + } + return 1; } void @@ -47,18 +58,20 @@ dbg_log (const char *fmt,...) va_start (ap, fmt); vsnprintf (msg2, sizeof (msg), fmt, ap); - if (debug_flag) + if (debug_level > 0) { - snprintf (msg, sizeof (msg), "%d: %s\n", getpid (), msg2); + snprintf (msg, sizeof (msg), "%d: %s%s", getpid (), msg2, + msg2[strlen (msg2) - 1] == '\n' ? "" : "\n"); if (dbgout) - fputs (msg, dbgout); + { + fputs (msg, dbgout); + fflush (dbgout); + } else fputs (msg, stderr); } else - { - snprintf (msg, sizeof (msg), "%d: %s", getpid (), msg2); - syslog (LOG_NOTICE, msg); - } + syslog (LOG_NOTICE, "%d %s", getpid (), msg2); + va_end (ap); }