From 46e1510536af9037c2aa21eb0515139227ea487d Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Sun, 23 Jun 2013 21:38:55 -0400 Subject: [PATCH] [Listener] Improve config file-related warning Display a warning when the configuration file cannot be read only when the -f option was used. As stated in comment, the initial plan was to also display the warning in verbose mode, but at this point of the program the command-line is not parsed yet, so it's pointless to test for it. --- TODO.t2t | 6 ------ owlps-listener/owlps-listenerd.c | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/TODO.t2t b/TODO.t2t index afc32ac..3c0b361 100644 --- a/TODO.t2t +++ b/TODO.t2t @@ -121,12 +121,6 @@ Work to do in OwlPS - Refactor and review read_packet(). -- Handle better the configuration file reading - - Get rid of the "Cannot open configuration file" error, in quiet mode - and when the default configuration file has to be used (no file - specified by the user with -f). - - Filter the number of implicit packets per mobile? Currently, in passive or mixed mode, //all// the received packets are diff --git a/owlps-listener/owlps-listenerd.c b/owlps-listener/owlps-listenerd.c index 7573eb1..509895c 100644 --- a/owlps-listener/owlps-listenerd.c +++ b/owlps-listener/owlps-listenerd.c @@ -418,7 +418,11 @@ int parse_config_file(int argc, char **argv) CFG_END() } ; - char *config_file = NULL ; // Configuration file name + // Configuration file name + char *config_file = NULL ; + // True if we are using the default configuration file, false if the + // user specified a different one with -f + bool default_config_file = false ; #endif // OWLPS_LISTENER_USES_CONFIG_FILE // Option -f specifies a config file, options -h and -V exit the @@ -460,6 +464,7 @@ int parse_config_file(int argc, char **argv) // If -f isn't found, we use the default config file if (config_file == NULL) { + default_config_file = true ; config_file = malloc((strlen(DEFAULT_CONFIG_FILE) + 1) * sizeof(char)) ; if (! config_file) @@ -476,9 +481,15 @@ int parse_config_file(int argc, char **argv) switch (cfg_parse(cfg, config_file)) { case CFG_FILE_ERROR : - fprintf(stderr, - "Warning! Cannot open configuration file \"%s\": %s.\n", - config_file, strerror(errno)) ; + /* If we can't open the file, we display a message only if + * the user used -f. In verbose mode, it would be nice to + * display the message even if the user didn't use -f, but + * the command-line options are not parsed yet so the verbose + * level is always zero. */ + if (! default_config_file) + fprintf(stderr, + "Warning! Cannot open configuration file \"%s\": %s.\n", + config_file, strerror(errno)) ; break ; case CFG_PARSE_ERROR : fprintf(stderr,