diff options
Diffstat (limited to 'apps/systemcmds/param/param.c')
-rw-r--r-- | apps/systemcmds/param/param.c | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/apps/systemcmds/param/param.c b/apps/systemcmds/param/param.c index 67ffb531a..53f9c365e 100644 --- a/apps/systemcmds/param/param.c +++ b/apps/systemcmds/param/param.c @@ -56,26 +56,48 @@ __EXPORT int param_main(int argc, char *argv[]); -static void do_save(void); -static void do_load(void); -static void do_import(void); +static void do_save(const char* param_file_name); +static void do_load(const char* param_file_name); +static void do_import(const char* param_file_name); static void do_show(const char* search_string); static void do_show_print(void *arg, param_t param); -static const char *param_file_name = "/eeprom/parameters"; - int param_main(int argc, char *argv[]) { if (argc >= 2) { - if (!strcmp(argv[1], "save")) - do_save(); + if (!strcmp(argv[1], "save")) { + if (argc >= 3) { + do_save(argv[2]); + } else { + do_save(param_get_default_file()); + } + } - if (!strcmp(argv[1], "load")) - do_load(); + if (!strcmp(argv[1], "load")) { + if (argc >= 3) { + do_load(argv[2]); + } else { + do_load(param_get_default_file()); + } + } + + if (!strcmp(argv[1], "import")) { + if (argc >= 3) { + do_import(argv[2]); + } else { + do_import(param_get_default_file()); + } + } - if (!strcmp(argv[1], "import")) - do_import(); + if (!strcmp(argv[1], "select")) { + if (argc >= 3) { + param_set_default_file(argv[2]); + } else { + param_set_default_file(NULL); + } + warnx("selected parameter file %s", param_get_default_file()); + } if (!strcmp(argv[1], "show")) if (argc >= 3) { @@ -84,12 +106,12 @@ param_main(int argc, char *argv[]) do_show(NULL); } } - - errx(1, "expected a command, try 'load', 'import', 'show' or 'save'\n"); + + errx(1, "expected a command, try 'load', 'import', 'show', 'select' or 'save'"); } static void -do_save(void) +do_save(const char* param_file_name) { /* delete the parameter file in case it exists */ unlink(param_file_name); @@ -112,7 +134,7 @@ do_save(void) } static void -do_load(void) +do_load(const char* param_file_name) { int fd = open(param_file_name, O_RDONLY); @@ -122,14 +144,18 @@ do_load(void) int result = param_load(fd); close(fd); - if (result < 0) + if (result < 0) { errx(1, "error importing from '%s'", param_file_name); + } else { + /* set default file name for next storage operation */ + param_set_default_file(param_file_name); + } exit(0); } static void -do_import(void) +do_import(const char* param_file_name) { int fd = open(param_file_name, O_RDONLY); |