From f7373de0a5eb3d309dfb5d1c42367d3b289aa081 Mon Sep 17 00:00:00 2001 From: Stefan Kropp Date: Sun, 26 Dec 2021 12:10:57 +0100 Subject: [PATCH] Bugfix: Key file does not have group ?default? Bugfix for checking if configuration file exists. Also did some argv parameter checks. Issue: #26 --- changelog | 5 +++++ configure.ac | 2 +- src/main.c | 37 ++++++++++++++++++++++++++----------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/changelog b/changelog index 2acb55c..fe91e05 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +2020-05-16 Stefan Kropp + Release 0.1.1 + * Display help, if no parameter has been set + * fixed g_error_matches handling for config file + 2020-05-16 DebXWoody Release 0.1.0 diff --git a/configure.ac b/configure.ac index 3470cc8..23dd288 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([xmppc], [0.1.0], [stefan@debxwoody.de]) +AC_INIT([xmppc], [0.1.1], [stefan.kropp@posteo.de]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/main.c]) diff --git a/src/main.c b/src/main.c index eba6587..7c3cfbd 100644 --- a/src/main.c +++ b/src/main.c @@ -338,6 +338,11 @@ int main(int argc, char *argv[]) { printf("!!! WARNING: XMPPC is running in development mode !!!\n"); #endif + if(argc < 2) { + _show_help(); + return EXIT_FAILURE; + } + INIT_XMPPC(xmppc); static int verbose_flag = 0; @@ -425,20 +430,30 @@ int main(int argc, char *argv[]) { &error); if (!configfilefound) { - if(!g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) { - logError(&xmppc, "Error loading key file: %s", error->message); - return -1; + if(error && !g_error_matches(error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { + logError(&xmppc, "Error loading key file: %s\n", error->message); + return EXIT_FAILURE; } - } else { - if(jid == NULL && pwd == NULL) { - logInfo(&xmppc,"Loading default account\n"); - if( account == NULL ) { - account = "default"; - } - jid = g_key_file_get_value (config_file, account, "jid" ,&error); - pwd = g_key_file_get_value (config_file, account, "pwd" ,&error); + if(jid == NULL && account == NULL) { + printf("You need either --jid or --account parameter or a default account\n"); + _show_help(); + return EXIT_FAILURE; } } + error = NULL; + + if(jid == NULL && pwd == NULL) { + logInfo(&xmppc,"Loading default account\n"); + if( account == NULL ) { + account = "default"; + } + jid = g_key_file_get_value (config_file, account, "jid" ,&error); + if( error ) { + logError(&xmppc, "No jid found in configuration file. %s\n", error->message); + return EXIT_FAILURE; + } + pwd = g_key_file_get_value (config_file, account, "pwd" ,&error); + } if ( !pwd ) { static struct termios current_terminal;