Linux: changed param to nit use errx or exit

Thread based implementaton can't call errx or exit

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
Mark Charlebois
2015-03-24 07:42:20 -07:00
parent 526b0e68eb
commit 977036faf9
2 changed files with 71 additions and 61 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ MODULES += drivers/ms5611
#
# System commands
#
#MODULES += systemcmds/boardinfo
MODULES += systemcmds/param
#
# General system control
+70 -60
View File
@@ -58,15 +58,15 @@
__EXPORT int param_main(int argc, char *argv[]);
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 int do_save(const char *param_file_name);
static int do_load(const char *param_file_name);
static int 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 void do_set(const char *name, const char *val, bool fail_on_not_found);
static void do_compare(const char *name, char *vals[], unsigned comparisons);
static void do_reset(const char *excludes[], int num_excludes);
static void do_reset_nostart(const char *excludes[], int num_excludes);
static int do_set(const char *name, const char *val, bool fail_on_not_found);
static int do_compare(const char *name, char *vals[], unsigned comparisons);
static int do_reset(const char *excludes[], int num_excludes);
static int do_reset_nostart(const char *excludes[], int num_excludes);
int
param_main(int argc, char *argv[])
@@ -74,34 +74,34 @@ param_main(int argc, char *argv[])
if (argc >= 2) {
if (!strcmp(argv[1], "save")) {
if (argc >= 3) {
do_save(argv[2]);
return do_save(argv[2]);
} else {
if (param_save_default()) {
warnx("Param export failed.");
exit(1);
return 1;
} else {
exit(0);
return 0;
}
}
}
if (!strcmp(argv[1], "load")) {
if (argc >= 3) {
do_load(argv[2]);
return do_load(argv[2]);
} else {
do_load(param_get_default_file());
return do_load(param_get_default_file());
}
}
if (!strcmp(argv[1], "import")) {
if (argc >= 3) {
do_import(argv[2]);
return do_import(argv[2]);
} else {
do_import(param_get_default_file());
return do_import(param_get_default_file());
}
}
@@ -114,15 +114,17 @@ param_main(int argc, char *argv[])
}
warnx("selected parameter default file %s", param_get_default_file());
exit(0);
return 0;
}
if (!strcmp(argv[1], "show")) {
if (argc >= 3) {
do_show(argv[2]);
return 0;
} else {
do_show(NULL);
return 0;
}
}
@@ -132,55 +134,59 @@ param_main(int argc, char *argv[])
/* if the fail switch is provided, fails the command if not found */
bool fail = !strcmp(argv[4], "fail");
do_set(argv[2], argv[3], fail);
return do_set(argv[2], argv[3], fail);
} else if (argc >= 4) {
do_set(argv[2], argv[3], false);
return do_set(argv[2], argv[3], false);
} else {
errx(1, "not enough arguments.\nTry 'param set PARAM_NAME 3 [fail]'");
warnx("not enough arguments.\nTry 'param set PARAM_NAME 3 [fail]'");
return 1;
}
}
if (!strcmp(argv[1], "compare")) {
if (argc >= 4) {
do_compare(argv[2], &argv[3], argc - 3);
return do_compare(argv[2], &argv[3], argc - 3);
} else {
errx(1, "not enough arguments.\nTry 'param compare PARAM_NAME 3'");
warnx("not enough arguments.\nTry 'param compare PARAM_NAME 3'");
return 1;
}
}
if (!strcmp(argv[1], "reset")) {
if (argc >= 3) {
do_reset((const char **) &argv[2], argc - 2);
return do_reset((const char **) &argv[2], argc - 2);
} else {
do_reset(NULL, 0);
return do_reset(NULL, 0);
}
}
if (!strcmp(argv[1], "reset_nostart")) {
if (argc >= 3) {
do_reset_nostart((const char **) &argv[2], argc - 2);
return do_reset_nostart((const char **) &argv[2], argc - 2);
} else {
do_reset_nostart(NULL, 0);
return do_reset_nostart(NULL, 0);
}
}
}
errx(1, "expected a command, try 'load', 'import', 'show', 'set', 'compare', 'select' or 'save'");
warnx("expected a command, try 'load', 'import', 'show', 'set', 'compare', 'select' or 'save'");
return 1;
}
static void
static int
do_save(const char *param_file_name)
{
/* create the file */
int fd = open(param_file_name, O_WRONLY | O_CREAT);
if (fd < 0) {
err(1, "opening '%s' failed", param_file_name);
warn("opening '%s' failed", param_file_name);
return 1;
}
int result = param_export(fd, false);
@@ -188,48 +194,53 @@ do_save(const char *param_file_name)
if (result < 0) {
(void)unlink(param_file_name);
errx(1, "error exporting to '%s'", param_file_name);
warnx("error exporting to '%s'", param_file_name);
return 1;
}
exit(0);
return 0;
}
static void
static int
do_load(const char *param_file_name)
{
int fd = open(param_file_name, O_RDONLY);
if (fd < 0) {
err(1, "open '%s'", param_file_name);
warn("open '%s'", param_file_name);
return 1;
}
int result = param_load(fd);
close(fd);
if (result < 0) {
errx(1, "error importing from '%s'", param_file_name);
warnx("error importing from '%s'", param_file_name);
return 1;
}
exit(0);
return 0;
}
static void
static int
do_import(const char *param_file_name)
{
int fd = open(param_file_name, O_RDONLY);
if (fd < 0) {
err(1, "open '%s'", param_file_name);
warn("open '%s'", param_file_name);
return 1;
}
int result = param_import(fd);
close(fd);
if (result < 0) {
errx(1, "error importing from '%s'", param_file_name);
warnx("error importing from '%s'", param_file_name);
return 1;
}
exit(0);
return 0;
}
static void
@@ -238,8 +249,6 @@ do_show(const char *search_string)
printf("Symbols: x = used, + = saved, * = unsaved\n");
param_foreach(do_show_print, (char *)search_string, false, false);
printf("\n %u parameters total, %u used.\n", param_count(), param_count_used());
exit(0);
}
static void
@@ -267,7 +276,8 @@ do_show_print(void *arg, param_t param)
} else if (*ss == '*') {
if (*(ss + 1) != '\0') {
warnx("* symbol only allowed at end of search string.");
exit(1);
// FIXME - should exit
return;
}
pp++;
@@ -310,7 +320,7 @@ do_show_print(void *arg, param_t param)
break;
case PARAM_TYPE_STRUCT ... PARAM_TYPE_STRUCT_MAX:
printf("<struct type %d size %u>\n", 0 + param_type(param), param_size(param));
printf("<struct type %d size %lu>\n", 0 + param_type(param), param_size(param));
return;
default:
@@ -318,10 +328,10 @@ do_show_print(void *arg, param_t param)
return;
}
printf("<error fetching parameter %d>\n", param);
printf("<error fetching parameter %lu>\n", param);
}
static void
static int
do_set(const char *name, const char *val, bool fail_on_not_found)
{
int32_t i;
@@ -331,7 +341,8 @@ do_set(const char *name, const char *val, bool fail_on_not_found)
/* set nothing if parameter cannot be found */
if (param == PARAM_INVALID) {
/* param not found - fail silenty in scripts as it prevents booting */
errx(((fail_on_not_found) ? 1 : 0), "Error: Parameter %s not found.", name);
warnx("Error: Parameter %s not found.", name);
return (fail_on_not_found) ? 1 : 0;
}
printf("%c %s: ",
@@ -386,13 +397,14 @@ do_set(const char *name, const char *val, bool fail_on_not_found)
break;
default:
errx(1, "<unknown / unsupported type %d>\n", 0 + param_type(param));
warnx("<unknown / unsupported type %d>\n", 0 + param_type(param));
return 1;
}
exit(0);
return 0;
}
static void
static int
do_compare(const char *name, char *vals[], unsigned comparisons)
{
int32_t i;
@@ -402,7 +414,8 @@ do_compare(const char *name, char *vals[], unsigned comparisons)
/* set nothing if parameter cannot be found */
if (param == PARAM_INVALID) {
/* param not found */
errx(1, "Error: Parameter %s not found.", name);
warnx("Error: Parameter %s not found.", name);
return 1;
}
/*
@@ -451,7 +464,8 @@ do_compare(const char *name, char *vals[], unsigned comparisons)
break;
default:
errx(1, "<unknown / unsupported type %d>\n", 0 + param_type(param));
warnx("<unknown / unsupported type %d>\n", 0 + param_type(param));
return 1;
}
if (ret == 0) {
@@ -460,10 +474,10 @@ do_compare(const char *name, char *vals[], unsigned comparisons)
param_name(param));
}
exit(ret);
return ret;
}
static void
static int
do_reset(const char *excludes[], int num_excludes)
{
if (num_excludes > 0) {
@@ -475,17 +489,14 @@ do_reset(const char *excludes[], int num_excludes)
if (param_save_default()) {
warnx("Param export failed.");
exit(1);
} else {
exit(0);
return 1;
}
return 0;
}
static void
static int
do_reset_nostart(const char *excludes[], int num_excludes)
{
int32_t autostart;
int32_t autoconfig;
@@ -504,9 +515,8 @@ do_reset_nostart(const char *excludes[], int num_excludes)
if (param_save_default()) {
warnx("Param export failed.");
exit(1);
return 1;
} else {
exit(0);
}
return 0;
}