X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=nscd%2Fdbg_log.c;h=5e192c97dd8c093b83d7e19169ded19c134977c1;hp=69252592a868625664891408ad89c31007c80066;hb=4b69b20a6f55e974e80e2eff97f0c79257673d5e;hpb=591942f95f7903cdaa8a6d4798ae5c0469a9b0b6 diff --git a/nscd/dbg_log.c b/nscd/dbg_log.c index 69252592a8..5e192c97dd 100644 --- a/nscd/dbg_log.c +++ b/nscd/dbg_log.c @@ -1,24 +1,24 @@ -/* Copyright (c) 1998, 2000 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. */ +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 @@ -49,7 +60,8 @@ dbg_log (const char *fmt,...) 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); @@ -59,9 +71,7 @@ dbg_log (const char *fmt,...) fputs (msg, stderr); } else - { - snprintf (msg, sizeof (msg), "%d: %s", getpid (), msg2); - syslog (LOG_NOTICE, "%s", msg); - } + syslog (LOG_NOTICE, "%d %s", getpid (), msg2); + va_end (ap); }