diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2007-07-05 18:01:52 +0200 |
---|---|---|
committer | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-07-05 18:01:52 +0200 |
commit | 97327a1b05bd8963c2331d32fa3de3257d2539d0 (patch) | |
tree | d6e69d48a8447c122df61f41a41bcd020a66fbf4 /scripts | |
parent | e694adc6a4716fc589693eb8eb8e67bbf54e8edc (diff) | |
download | barebox-97327a1b05bd8963c2331d32fa3de3257d2539d0.tar.gz barebox-97327a1b05bd8963c2331d32fa3de3257d2539d0.tar.xz |
svn_rev_422
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile | 3 | ||||
-rw-r--r-- | scripts/ubootenv.c | 70 |
2 files changed, 72 insertions, 1 deletions
diff --git a/scripts/Makefile b/scripts/Makefile index 6c47c8cce6..c0040d3e71 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -11,7 +11,8 @@ hostprogs-$(CONFIG_KALLSYMS) += kallsyms hostprogs-$(CONFIG_LOGO) += pnmtologo hostprogs-$(CONFIG_VT) += conmakehash hostprogs-$(CONFIG_PROM_CONSOLE) += conmakehash -hostprogs-$(CONFIG_IKCONFIG) += bin2c +hostprogs-y += bin2c +hostprogs-y += ubootenv always := $(hostprogs-y) $(hostprogs-m) diff --git a/scripts/ubootenv.c b/scripts/ubootenv.c new file mode 100644 index 0000000000..02d4124195 --- /dev/null +++ b/scripts/ubootenv.c @@ -0,0 +1,70 @@ +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdint.h> +#include <limits.h> +#include <errno.h> +#include <dirent.h> +#include <stdlib.h> +#include <string.h> +#include <getopt.h> + +#define xmalloc malloc + +#include "../include/envfs.h" +#include "../common/environment.c" + +void usage(char *prgname) +{ + printf( "Usage : %s [OPTION] DIRECTORY FILE\n" + "Load an u-boot environment sector into a directory or\n" + "save a directory into an u-boot environment sector\n" + "\n" + "options:\n" + " -s save (directory -> environment sector)\n" + " -l load (environment sector -> directory)\n", + prgname); +} + +int main(int argc, char *argv[]) +{ + int opt; + int save = 0, load = 0; + char *filename = NULL, *dirname = NULL; + + while((opt = getopt(argc, argv, "sl")) != -1) { + switch (opt) { + case 's': + save = 1; + break; + case 'l': + load = 1; + break; + } + } + + if (optind + 1 >= argc) { + usage(argv[0]); + exit(1); + } + + dirname = argv[optind]; + filename = argv[optind + 1]; + + if ((!load && !save) || (load && save) || !filename || !dirname) { + usage(argv[0]); + exit(1); + } + + if (load) { + printf("loading env from file %s to %s\n", filename, dirname); + envfs_load(filename, dirname); + } + if (save) { + printf("saving contents of %s to file %s\n", dirname, filename); + envfs_save(filename, dirname); + } + exit(0); +} |