mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 10:46:33 +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
|
# System commands
|
||||||
#
|
#
|
||||||
#MODULES += systemcmds/boardinfo
|
MODULES += systemcmds/param
|
||||||
|
|
||||||
#
|
#
|
||||||
# General system control
|
# General system control
|
||||||
|
|||||||
@@ -58,15 +58,15 @@
|
|||||||
|
|
||||||
__EXPORT int param_main(int argc, char *argv[]);
|
__EXPORT int param_main(int argc, char *argv[]);
|
||||||
|
|
||||||
static void do_save(const char *param_file_name);
|
static int do_save(const char *param_file_name);
|
||||||
static void do_load(const char *param_file_name);
|
static int do_load(const char *param_file_name);
|
||||||
static void do_import(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(const char *search_string);
|
||||||
static void do_show_print(void *arg, param_t param);
|
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 int 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 int do_compare(const char *name, char *vals[], unsigned comparisons);
|
||||||
static void do_reset(const char *excludes[], int num_excludes);
|
static int do_reset(const char *excludes[], int num_excludes);
|
||||||
static void do_reset_nostart(const char *excludes[], int num_excludes);
|
static int do_reset_nostart(const char *excludes[], int num_excludes);
|
||||||
|
|
||||||
int
|
int
|
||||||
param_main(int argc, char *argv[])
|
param_main(int argc, char *argv[])
|
||||||
@@ -74,34 +74,34 @@ param_main(int argc, char *argv[])
|
|||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
if (!strcmp(argv[1], "save")) {
|
if (!strcmp(argv[1], "save")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_save(argv[2]);
|
return do_save(argv[2]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (param_save_default()) {
|
if (param_save_default()) {
|
||||||
warnx("Param export failed.");
|
warnx("Param export failed.");
|
||||||
exit(1);
|
return 1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
exit(0);
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "load")) {
|
if (!strcmp(argv[1], "load")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_load(argv[2]);
|
return do_load(argv[2]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
do_load(param_get_default_file());
|
return do_load(param_get_default_file());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "import")) {
|
if (!strcmp(argv[1], "import")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_import(argv[2]);
|
return do_import(argv[2]);
|
||||||
|
|
||||||
} else {
|
} 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());
|
warnx("selected parameter default file %s", param_get_default_file());
|
||||||
exit(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "show")) {
|
if (!strcmp(argv[1], "show")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_show(argv[2]);
|
do_show(argv[2]);
|
||||||
|
return 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
do_show(NULL);
|
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 */
|
/* if the fail switch is provided, fails the command if not found */
|
||||||
bool fail = !strcmp(argv[4], "fail");
|
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) {
|
} else if (argc >= 4) {
|
||||||
do_set(argv[2], argv[3], false);
|
return do_set(argv[2], argv[3], false);
|
||||||
|
|
||||||
} else {
|
} 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 (!strcmp(argv[1], "compare")) {
|
||||||
if (argc >= 4) {
|
if (argc >= 4) {
|
||||||
do_compare(argv[2], &argv[3], argc - 3);
|
return do_compare(argv[2], &argv[3], argc - 3);
|
||||||
|
|
||||||
} else {
|
} 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 (!strcmp(argv[1], "reset")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_reset((const char **) &argv[2], argc - 2);
|
return do_reset((const char **) &argv[2], argc - 2);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
do_reset(NULL, 0);
|
return do_reset(NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "reset_nostart")) {
|
if (!strcmp(argv[1], "reset_nostart")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
do_reset_nostart((const char **) &argv[2], argc - 2);
|
return do_reset_nostart((const char **) &argv[2], argc - 2);
|
||||||
|
|
||||||
} else {
|
} 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)
|
do_save(const char *param_file_name)
|
||||||
{
|
{
|
||||||
/* create the file */
|
/* create the file */
|
||||||
int fd = open(param_file_name, O_WRONLY | O_CREAT);
|
int fd = open(param_file_name, O_WRONLY | O_CREAT);
|
||||||
|
|
||||||
if (fd < 0) {
|
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);
|
int result = param_export(fd, false);
|
||||||
@@ -188,48 +194,53 @@ do_save(const char *param_file_name)
|
|||||||
|
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
(void)unlink(param_file_name);
|
(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)
|
do_load(const char *param_file_name)
|
||||||
{
|
{
|
||||||
int fd = open(param_file_name, O_RDONLY);
|
int fd = open(param_file_name, O_RDONLY);
|
||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
err(1, "open '%s'", param_file_name);
|
warn("open '%s'", param_file_name);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = param_load(fd);
|
int result = param_load(fd);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if (result < 0) {
|
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)
|
do_import(const char *param_file_name)
|
||||||
{
|
{
|
||||||
int fd = open(param_file_name, O_RDONLY);
|
int fd = open(param_file_name, O_RDONLY);
|
||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
err(1, "open '%s'", param_file_name);
|
warn("open '%s'", param_file_name);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = param_import(fd);
|
int result = param_import(fd);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if (result < 0) {
|
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 void
|
||||||
@@ -238,8 +249,6 @@ do_show(const char *search_string)
|
|||||||
printf("Symbols: x = used, + = saved, * = unsaved\n");
|
printf("Symbols: x = used, + = saved, * = unsaved\n");
|
||||||
param_foreach(do_show_print, (char *)search_string, false, false);
|
param_foreach(do_show_print, (char *)search_string, false, false);
|
||||||
printf("\n %u parameters total, %u used.\n", param_count(), param_count_used());
|
printf("\n %u parameters total, %u used.\n", param_count(), param_count_used());
|
||||||
|
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -267,7 +276,8 @@ do_show_print(void *arg, param_t param)
|
|||||||
} else if (*ss == '*') {
|
} else if (*ss == '*') {
|
||||||
if (*(ss + 1) != '\0') {
|
if (*(ss + 1) != '\0') {
|
||||||
warnx("* symbol only allowed at end of search string.");
|
warnx("* symbol only allowed at end of search string.");
|
||||||
exit(1);
|
// FIXME - should exit
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pp++;
|
pp++;
|
||||||
@@ -310,7 +320,7 @@ do_show_print(void *arg, param_t param)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PARAM_TYPE_STRUCT ... PARAM_TYPE_STRUCT_MAX:
|
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;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -318,10 +328,10 @@ do_show_print(void *arg, param_t param)
|
|||||||
return;
|
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)
|
do_set(const char *name, const char *val, bool fail_on_not_found)
|
||||||
{
|
{
|
||||||
int32_t i;
|
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 */
|
/* set nothing if parameter cannot be found */
|
||||||
if (param == PARAM_INVALID) {
|
if (param == PARAM_INVALID) {
|
||||||
/* param not found - fail silenty in scripts as it prevents booting */
|
/* 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: ",
|
printf("%c %s: ",
|
||||||
@@ -386,13 +397,14 @@ do_set(const char *name, const char *val, bool fail_on_not_found)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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)
|
do_compare(const char *name, char *vals[], unsigned comparisons)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
@@ -402,7 +414,8 @@ do_compare(const char *name, char *vals[], unsigned comparisons)
|
|||||||
/* set nothing if parameter cannot be found */
|
/* set nothing if parameter cannot be found */
|
||||||
if (param == PARAM_INVALID) {
|
if (param == PARAM_INVALID) {
|
||||||
/* param not found */
|
/* 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;
|
break;
|
||||||
|
|
||||||
default:
|
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) {
|
if (ret == 0) {
|
||||||
@@ -460,10 +474,10 @@ do_compare(const char *name, char *vals[], unsigned comparisons)
|
|||||||
param_name(param));
|
param_name(param));
|
||||||
}
|
}
|
||||||
|
|
||||||
exit(ret);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
do_reset(const char *excludes[], int num_excludes)
|
do_reset(const char *excludes[], int num_excludes)
|
||||||
{
|
{
|
||||||
if (num_excludes > 0) {
|
if (num_excludes > 0) {
|
||||||
@@ -475,17 +489,14 @@ do_reset(const char *excludes[], int num_excludes)
|
|||||||
|
|
||||||
if (param_save_default()) {
|
if (param_save_default()) {
|
||||||
warnx("Param export failed.");
|
warnx("Param export failed.");
|
||||||
exit(1);
|
return 1;
|
||||||
|
|
||||||
} else {
|
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
do_reset_nostart(const char *excludes[], int num_excludes)
|
do_reset_nostart(const char *excludes[], int num_excludes)
|
||||||
{
|
{
|
||||||
|
|
||||||
int32_t autostart;
|
int32_t autostart;
|
||||||
int32_t autoconfig;
|
int32_t autoconfig;
|
||||||
|
|
||||||
@@ -504,9 +515,8 @@ do_reset_nostart(const char *excludes[], int num_excludes)
|
|||||||
|
|
||||||
if (param_save_default()) {
|
if (param_save_default()) {
|
||||||
warnx("Param export failed.");
|
warnx("Param export failed.");
|
||||||
exit(1);
|
return 1;
|
||||||
|
|
||||||
} else {
|
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user