diff --git a/HISTORY b/HISTORY index 36bc8d71..970bb65a 100644 --- a/HISTORY +++ b/HISTORY @@ -109,3 +109,4 @@ Video Disk Recorder Revision History - There can now be more than one video directory (in case you have several disks). - Fixed learning key codes for PC keyboard. +- New command line option '-l' to set the log level. diff --git a/dvbapi.c b/dvbapi.c index 2f726ed5..ca439da7 100644 --- a/dvbapi.c +++ b/dvbapi.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.16 2000/07/29 14:49:46 kls Exp $ + * $Id: dvbapi.c 1.17 2000/07/29 19:00:19 kls Exp $ */ #include "dvbapi.h" @@ -1158,10 +1158,12 @@ bool cDvbApi::Init(void) } } PrimaryDvbApi = dvbApi[0]; - if (NumDvbApis > 0) + if (NumDvbApis > 0) { isyslog(LOG_INFO, "found %d video device%s", NumDvbApis, NumDvbApis > 1 ? "s" : ""); - else + } // need braces because of isyslog-macro + else { esyslog(LOG_ERR, "ERROR: no video device found, giving up!"); + } return NumDvbApis > 0; } diff --git a/tools.c b/tools.c index 83cb51ef..0dca69ee 100644 --- a/tools.c +++ b/tools.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.12 2000/07/29 14:02:41 kls Exp $ + * $Id: tools.c 1.13 2000/07/29 18:41:45 kls Exp $ */ #define _GNU_SOURCE @@ -245,7 +245,7 @@ bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks) LOG_ERROR_STR(l); } else - esyslog(LOG_ERR, "symlink name length (%d) exceeded anticipated buffer size (%d)", n, size); + esyslog(LOG_ERR, "ERROR: symlink name length (%d) exceeded anticipated buffer size (%d)", n, size); delete l; } dsyslog(LOG_INFO, "removing %s", buffer); diff --git a/vdr.c b/vdr.c index 0d418dc8..69eceedb 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.26 2000/07/29 18:19:12 kls Exp $ + * $Id: vdr.c 1.27 2000/07/29 19:01:57 kls Exp $ */ #include @@ -65,6 +65,7 @@ int main(int argc, char *argv[]) static struct option long_options[] = { { "daemon", no_argument, NULL, 'd' }, { "help", no_argument, NULL, 'h' }, + { "log", required_argument, NULL, 'l' }, { "port", required_argument, NULL, 'p' }, { "video", required_argument, NULL, 'v' }, { 0 } @@ -72,14 +73,18 @@ int main(int argc, char *argv[]) int c; int option_index = 0; - while ((c = getopt_long(argc, argv, "dhp:v:", long_options, &option_index)) != -1) { + while ((c = getopt_long(argc, argv, "dhl:p:v:", long_options, &option_index)) != -1) { switch (c) { case 'd': DaemonMode = true; break; case 'h': printf("Usage: vdr [OPTION]\n\n" - " -h, --help display this help and exit\n" - " -d, --daemon run in daemon mode\n" - " -p PORT, --port=PORT use PORT for SVDRP (default: %d, '0' turns off SVDRP)\n" - " -v DIR, --video=DIR use DIR as video directory (default is %s)\n" + " -h, --help display this help and exit\n" + " -d, --daemon run in daemon mode\n" + " -l LEVEL, --log=LEVEL set log level (default: 3)\n" + " 0 = no logging, 1 = errors only,\n" + " 2 = errors and info, 3 = errors, info and debug\n" + " -p PORT, --port=PORT use PORT for SVDRP (default: %d)\n" + " 0 turns off SVDRP\n" + " -v DIR, --video=DIR use DIR as video directory (default is %s)\n" "\n" "Report bugs to \n", DEFAULTSVDRPPORT, @@ -87,8 +92,18 @@ int main(int argc, char *argv[]) ); return 0; break; + case 'l': if (isnumber(optarg)) { + int l = atoi(optarg); + if (0 <= l && l <= 3) { + SysLogLevel = l; + break; + } + } + fprintf(stderr, "vdr: invalid log level: %s\n", optarg); + abort(); + break; case 'p': if (isnumber(optarg)) - SVDRPport = strtol(optarg, NULL, 10); + SVDRPport = atoi(optarg); else { fprintf(stderr, "vdr: invalid port number: %s\n", optarg); abort(); @@ -102,7 +117,8 @@ int main(int argc, char *argv[]) // Log file: - openlog("vdr", LOG_PID | LOG_CONS, LOG_USER); + if (SysLogLevel > 0) + openlog("vdr", LOG_PID | LOG_CONS, LOG_USER); // Check the video directory: @@ -118,7 +134,7 @@ int main(int argc, char *argv[]) pid_t pid = fork(); if (pid < 0) { fprintf(stderr, "%s\n", strerror(errno)); - esyslog(LOG_ERR, strerror(errno)); + esyslog(LOG_ERR, "ERROR: %s", strerror(errno)); abort(); } if (pid != 0) @@ -255,6 +271,7 @@ int main(int argc, char *argv[]) delete SVDRP; cDvbApi::Cleanup(); isyslog(LOG_INFO, "exiting"); - closelog(); + if (SysLogLevel > 0) + closelog(); return 0; }