/* * Modem mode switcher * * Copyright (C) 2009 Dan Williams * * 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; either version 2 of the License, or * (at your option) any later version. * * 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 General Public License for more details: */ #include #include #include #include #include #include #include "utils.h" static int debug_on = 0; static int quiet = 0; FILE *logfile = NULL; void do_log (int level, const char *fmt, ...) { va_list args; char buffer[1024]; char tag = 'L'; if (level >= LOG_DBG && !debug_on) return; va_start (args, fmt); vsnprintf (buffer, sizeof (buffer), fmt, args); va_end (args); if (level == LOG_ERR) tag = 'E'; else if (level == LOG_MSG) tag = 'L'; else if (level == LOG_DBG) tag = 'D'; if (logfile) fprintf (logfile, "%c: %s\n", tag, buffer); if (!quiet) fprintf ((level == LOG_ERR) ? stderr : stdout, "%c: %s\n", tag, buffer); } int log_startup (const char *path, int do_debug, int be_quiet) { time_t t; quiet = be_quiet; debug_on = do_debug; if (!path) return 0; logfile = fopen (path, "a+"); if (!logfile) return 1; t = time (NULL); message ("\n**** Started: %s\n", ctime (&t)); return 0; } void log_shutdown (void) { if (logfile) fclose (logfile); }