summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-07-05 18:01:52 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-07-05 18:01:52 +0200
commit97327a1b05bd8963c2331d32fa3de3257d2539d0 (patch)
treed6e69d48a8447c122df61f41a41bcd020a66fbf4 /scripts
parente694adc6a4716fc589693eb8eb8e67bbf54e8edc (diff)
downloadbarebox-97327a1b05bd8963c2331d32fa3de3257d2539d0.tar.gz
barebox-97327a1b05bd8963c2331d32fa3de3257d2539d0.tar.xz
svn_rev_422
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Makefile3
-rw-r--r--scripts/ubootenv.c70
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);
+}