mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-24 15:40:31 +08:00
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:
@@ -18,7 +18,7 @@ MODULES += drivers/ms5611
|
||||
#
|
||||
# System commands
|
||||
#
|
||||
#MODULES += systemcmds/boardinfo
|
||||
MODULES += systemcmds/param
|
||||
|
||||
#
|
||||
# General system control
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user