summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/flashfs/flash.c
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/aux/flashfs/flash.c
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/aux/flashfs/flash.c')
-rwxr-xr-xsys/src/cmd/aux/flashfs/flash.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/sys/src/cmd/aux/flashfs/flash.c b/sys/src/cmd/aux/flashfs/flash.c
new file mode 100755
index 000000000..ed5ea7361
--- /dev/null
+++ b/sys/src/cmd/aux/flashfs/flash.c
@@ -0,0 +1,74 @@
+#include <u.h>
+#include <libc.h>
+#include <auth.h>
+#include <fcall.h>
+#include <thread.h>
+#include <9p.h>
+#include "flashfs.h"
+
+extern int chatty9p;
+
+static void
+usage(void)
+{
+ fprint(2, "usage: %s [-rD] [-n nsect] [-z sectsize] [-m mount] [-f file]\n", argv0);
+ exits("usage");
+}
+
+static ulong
+argval(char *arg)
+{
+ long v;
+ char *extra;
+
+ if(arg == nil)
+ usage();
+ v = strtol(arg, &extra, 0);
+ if(*extra || v <= 0)
+ usage();
+ return v;
+}
+
+void
+main(int argc, char **argv)
+{
+ int ro;
+ char *file, *mount;
+
+ mount = "/n/brzr";
+ ro = 0;
+ file = "/dev/flash/fs";
+
+ ARGBEGIN {
+ case 'D':
+ chatty9p++;
+ break;
+ case 'r':
+ ro++;
+ break;
+ case 'n':
+ nsects = argval(ARGF());
+ break;
+ case 'z':
+ sectsize = argval(ARGF());
+ break;
+ case 'f':
+ file = ARGF();
+ break;
+ case 'm':
+ mount = ARGF();
+ break;
+ default:
+ usage();
+ } ARGEND
+
+ if(argc != 0)
+ usage();
+
+ initdata(file, 0);
+ sectbuff = emalloc9p(sectsize);
+ einit();
+ loadfs(ro);
+ serve(mount);
+ exits(nil);
+}