client: Use lsu_merge_config_file_options().
authorAndre Noll <maan@tuebingen.mpg.de>
Thu, 15 Mar 2018 01:45:59 +0000 (02:45 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 22 Apr 2018 18:30:37 +0000 (20:30 +0200)
The helper is a drop-in replacement for the old code. We only have
to include the lsu header and link with the object.

client_common.c
configure.ac

index a8d4805..094b93b 100644 (file)
@@ -15,6 +15,7 @@
 #include "para.h"
 #include "error.h"
 #include "list.h"
+#include "lsu.h"
 #include "sched.h"
 #include "crypt.h"
 #include "net.h"
@@ -525,12 +526,10 @@ int client_parse_config(int argc, char *argv[], struct client_task **ct_ptr,
                int *loglevel)
 {
        const struct lls_command *cmd = CLIENT_CMD_PTR;
-       void *map;
-       size_t sz;
        struct lls_parse_result *lpr;
        int ret, ll;
        struct client_task *ct;
-       char *cf = NULL, *kf = NULL, *user, *errctx, *home = para_homedir();
+       char *kf = NULL, *user, *errctx, *home = para_homedir();
 
        ret = lls(lls_parse(argc, argv, cmd, &lpr, &errctx));
        if (ret < 0)
@@ -538,38 +537,10 @@ int client_parse_config(int argc, char *argv[], struct client_task **ct_ptr,
        version_handle_flag("client", CLIENT_OPT_GIVEN(VERSION, lpr));
        handle_help_flag(lpr);
 
-       if (CLIENT_OPT_GIVEN(CONFIG_FILE, lpr))
-               cf = para_strdup(CLIENT_OPT_STRING_VAL(CONFIG_FILE, lpr));
-       else
-               cf = make_message("%s/.paraslash/client.conf", home);
-       ret = mmap_full_file(cf, O_RDONLY, &map, &sz, NULL);
-       if (ret < 0) {
-               if (ret != -E_EMPTY && ret != -ERRNO_TO_PARA_ERROR(ENOENT))
-                       goto out;
-               if (ret == -ERRNO_TO_PARA_ERROR(ENOENT) &&
-                               CLIENT_OPT_GIVEN(CONFIG_FILE, lpr))
-                       goto out;
-       } else {
-               int cf_argc;
-               char **cf_argv;
-               struct lls_parse_result *cf_lpr, *merged_lpr;
-               ret = lls(lls_convert_config(map, sz, NULL, &cf_argv, &errctx));
-               para_munmap(map, sz);
-               if (ret < 0)
-                       goto out;
-               cf_argc = ret;
-               ret = lls(lls_parse(cf_argc, cf_argv, cmd, &cf_lpr, &errctx));
-               lls_free_argv(cf_argv);
-               if (ret < 0)
-                       goto out;
-               ret = lls(lls_merge(lpr, cf_lpr, cmd, &merged_lpr,
-                       &errctx));
-               lls_free_parse_result(cf_lpr, cmd);
-               if (ret < 0)
-                       goto out;
-               lls_free_parse_result(lpr, cmd);
-               lpr = merged_lpr;
-       }
+       ret = lsu_merge_config_file_options(CLIENT_OPT_STRING_VAL(CONFIG_FILE, lpr),
+               "client.conf", &lpr, cmd, client_suite, 0U /* default flags */);
+       if (ret < 0)
+               goto out;
        /* success */
        ll = CLIENT_OPT_UINT32_VAL(LOGLEVEL, lpr);
        if (loglevel)
@@ -587,7 +558,6 @@ int client_parse_config(int argc, char *argv[], struct client_task **ct_ptr,
                }
        }
        PARA_INFO_LOG("user: %s\n", user);
-       PARA_INFO_LOG("config file: %s\n", cf);
        PARA_INFO_LOG("key file: %s\n", kf);
        PARA_INFO_LOG("loglevel: %d\n", ll);
        ct = para_calloc(sizeof(*ct));
@@ -599,7 +569,6 @@ int client_parse_config(int argc, char *argv[], struct client_task **ct_ptr,
        ret = lls_num_inputs(lpr);
 out:
        free(home);
-       free(cf);
        if (ret < 0) {
                if (errctx)
                        PARA_ERROR_LOG("%s\n", errctx);
index 7510528..110e0c3 100644 (file)
@@ -421,6 +421,7 @@ if test -n "$CRYPTOLIB"; then
                net
                string
                fd
+               lsu
                sched
                stdin
                stdout