From: Guillem Jover Date: Tue, 25 Mar 2008 04:33:08 +0000 (+0200) Subject: libdpkg: Move log_message to lib/log.c X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33496645907e6cbbc79a316493ea638347595d93;p=dpkg libdpkg: Move log_message to lib/log.c --- diff --git a/ChangeLog b/ChangeLog index 9c1325db..57eef74d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-25 Guillem Jover + + * lib/dbmodify.c (log_file, log_message): Move to ... + * lib/log.c: ... here. New file. + * lib/Makefile.am (libdpkg_a_SOURCES): Add 'log.c'. + * lib/dpkg-db.h (log_file, log_message): Move declaration to ... + * lib/dpkg.h: ... here. + 2008-03-25 Ian Jackson , Guillem Jover diff --git a/lib/Makefile.am b/lib/Makefile.am index ab34a3fa..12401a8f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -25,6 +25,7 @@ libdpkg_a_SOURCES = \ fields.c \ gettext.h \ lock.c \ + log.c \ md5.c md5.h \ mlib.c \ myopt.c myopt.h \ diff --git a/lib/dbmodify.c b/lib/dbmodify.c index d8556528..6abc4fe9 100644 --- a/lib/dbmodify.c +++ b/lib/dbmodify.c @@ -300,42 +300,3 @@ const char *pkgadminfile(struct pkginfo *pkg, const char *whichfile) { return vb.buf; } -const char *log_file= NULL; - -void log_message(const char *fmt, ...) { - static struct varbuf *log= NULL; - static FILE *logfd= NULL; - char time_str[20]; - time_t now; - va_list al; - - if (!log_file) - return; - - if (!logfd) { - logfd= fopen(log_file, "a"); - if (!logfd) { - fprintf(stderr, _("couldn't open log `%s': %s\n"), log_file, - strerror(errno)); - log_file= NULL; - return; - } - setlinebuf(logfd); - setcloexec(fileno(logfd), log_file); - } - - if (!log) { - log= nfmalloc(sizeof(struct varbuf)); - varbufinit(log); - } else - varbufreset(log); - - va_start(al,fmt); - varbufvprintf(log, fmt, al); - varbufaddc(log, 0); - va_end(al); - - time(&now); - strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", localtime(&now)); - fprintf(logfd, "%s %s\n", time_str, log->buf); -} diff --git a/lib/dpkg-db.h b/lib/dpkg-db.h index edb67fa6..565d629f 100644 --- a/lib/dpkg-db.h +++ b/lib/dpkg-db.h @@ -181,9 +181,6 @@ extern char *statusfile, *availablefile; /* initialised by modstatdb_init */ const char *pkgadminfile(struct pkginfo *pkg, const char *whichfile); -extern const char *log_file; -void log_message(const char *fmt, ...) PRINTFFORMAT(1, 2); - /*** from database.c ***/ struct pkginfo *findpackage(const char *name); diff --git a/lib/dpkg.h b/lib/dpkg.h index 45967432..d6c06f9d 100644 --- a/lib/dpkg.h +++ b/lib/dpkg.h @@ -207,6 +207,11 @@ void badusage(const char *fmt, ...) NONRETURNING PRINTFFORMAT(1, 2); void werr(const char *what) NONRETURNING; void warningf(const char *fmt, ...) PRINTFFORMAT(1, 2); +/*** log.c ***/ + +extern const char *log_file; +void log_message(const char *fmt, ...) PRINTFFORMAT(1, 2); + /*** cleanup.c ***/ void cu_closefile(int argc, void **argv); diff --git a/lib/log.c b/lib/log.c new file mode 100644 index 00000000..2e607b74 --- /dev/null +++ b/lib/log.c @@ -0,0 +1,74 @@ +/* + * dpkg - main program for package management + * log.c - logging related functions + * + * Copyright (C) 2005 Scott James Remnant + * + * This 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; either version 2, + * or (at your option) any later version. + * + * This 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with dpkg; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include +#include +#include +#include + +#include +#include + +const char *log_file = NULL; + +void +log_message(const char *fmt, ...) +{ + static struct varbuf *log = NULL; + static FILE *logfd = NULL; + char time_str[20]; + time_t now; + va_list al; + + if (!log_file) + return; + + if (!logfd) { + logfd = fopen(log_file, "a"); + if (!logfd) { + fprintf(stderr, _("couldn't open log `%s': %s\n"), + log_file, strerror(errno)); + log_file = NULL; + return; + } + setlinebuf(logfd); + setcloexec(fileno(logfd), log_file); + } + + if (!log) { + log = nfmalloc(sizeof(struct varbuf)); + varbufinit(log); + } else + varbufreset(log); + + va_start(al, fmt); + varbufvprintf(log, fmt, al); + varbufaddc(log, 0); + va_end(al); + + time(&now); + strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", + localtime(&now)); + fprintf(logfd, "%s %s\n", time_str, log->buf); +} +