diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-03-07 09:24:40 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-03-07 09:24:40 +0100 |
commit | 4df69d0b6e79a6c0633921117803802c24020cc3 (patch) | |
tree | 6bc294cb3eb8769fe584c72a63d5630999838c47 /commands | |
parent | fbf087808b55b542101654fe838c2db131aa9660 (diff) | |
parent | 66a1d213e04748a77170374c35f21f5b176837de (diff) | |
download | barebox-4df69d0b6e79a6c0633921117803802c24020cc3.tar.gz barebox-4df69d0b6e79a6c0633921117803802c24020cc3.tar.xz |
Merge branch 'for-next/env'
Diffstat (limited to 'commands')
-rw-r--r-- | commands/dfu.c | 10 | ||||
-rw-r--r-- | commands/loadenv.c | 37 |
2 files changed, 37 insertions, 10 deletions
diff --git a/commands/dfu.c b/commands/dfu.c index 6bd43e45c8..99a381f18a 100644 --- a/commands/dfu.c +++ b/commands/dfu.c @@ -60,11 +60,14 @@ static int dfu_do_parse_one(char *partstr, char **endstr, struct usb_dfu_dev *df case PARSE_FLAGS: switch (*partstr) { case 's': - dfu->flags |= DFU_FLAG_SAVE; + dfu->flags |= DFU_FLAG_SAFE; break; case 'r': dfu->flags |= DFU_FLAG_READBACK; break; + case 'c': + dfu->flags |= DFU_FLAG_CREATE; + break; default: return -EINVAL; } @@ -170,9 +173,10 @@ BAREBOX_CMD_HELP_OPT ("-p <str>", "product string\n") BAREBOX_CMD_HELP_OPT ("-V <id>", "vendor id\n") BAREBOX_CMD_HELP_OPT ("-P <id>", "product id\n") BAREBOX_CMD_HELP_OPT ("<description>", - "device1(name1)[sr],device2(name2)[sr]\n" + "device1(name1)[sr],device2(name2)[src]\n" "'s' means 'safe mode' (download the complete image before flashing) and\n" - "'r' that readback of the firmware is allowed.\n") + "'r' that readback of the firmware is allowed.\n" + "'c' if given, the file will be created (for use with regular files)\n") BAREBOX_CMD_HELP_END /** diff --git a/commands/loadenv.c b/commands/loadenv.c index bad88948a2..7b93e86892 100644 --- a/commands/loadenv.c +++ b/commands/loadenv.c @@ -26,15 +26,17 @@ #include <envfs.h> #include <errno.h> #include <fs.h> +#include <malloc.h> static int do_loadenv(int argc, char *argv[]) { - char *filename, *dirname; + char *filename = NULL, *dirname; unsigned flags = 0; int opt; int scrub = 0; + int defaultenv = 0; - while ((opt = getopt(argc, argv, "ns")) > 0) { + while ((opt = getopt(argc, argv, "nsd")) > 0) { switch (opt) { case 'n': flags |= ENV_FLAG_NO_OVERWRITE; @@ -42,6 +44,9 @@ static int do_loadenv(int argc, char *argv[]) case 's': scrub = 1; break; + case 'd': + defaultenv = 1; + break; default: return COMMAND_ERROR_USAGE; } @@ -52,10 +57,24 @@ static int do_loadenv(int argc, char *argv[]) else dirname = argv[optind + 1]; - if (argc - optind < 1) + if (argc - optind < 1) { filename = default_environment_path_get(); - else - filename = argv[optind]; + } else { + char *str = normalise_path(argv[optind]); + + /* + * /dev/defaultenv use to contain the defaultenvironment. + * we do not have this file anymore, but maintain compatibility + * to the 'loadenv -s /dev/defaultenv' command to restore the + * default environment for some time. + */ + if (!strcmp(str, "/dev/defaultenv")) + defaultenv = 1; + else + filename = argv[optind]; + + free(str); + } if (scrub) { int ret; @@ -75,15 +94,19 @@ static int do_loadenv(int argc, char *argv[]) } } - printf("loading environment from %s\n", filename); + printf("loading environment from %s\n", defaultenv ? "defaultenv" : filename); - return envfs_load(filename, dirname, flags); + if (defaultenv) + return defaultenv_load(dirname, flags); + else + return envfs_load(filename, dirname, flags); } BAREBOX_CMD_HELP_START(loadenv) BAREBOX_CMD_HELP_USAGE("loadenv OPTIONS [ENVFS] [DIRECTORY]\n") BAREBOX_CMD_HELP_OPT("-n", "do not overwrite existing files\n") BAREBOX_CMD_HELP_OPT("-s", "scrub old environment\n") +BAREBOX_CMD_HELP_OPT("-d", "load default environment\n") BAREBOX_CMD_HELP_SHORT("Load environment from ENVFS into DIRECTORY (default: /dev/env0 -> /env).\n") BAREBOX_CMD_HELP_END |