So here's a version with a runtime option for configuring the directory

Index: fwcutter.c
===================================================================
--- fwcutter.c  (revision 754)
+++ fwcutter.c  (working copy)
@@ -51,7 +51,7 @@

 static struct cmdline_args cmdargs;
 int big_endian_cpu;
-char* target_dir;
+char* target_dir = FIRMWARE_DIR;


 static void write_little_endian(FILE *f, byte *buffer, int len)
@@ -323,7 +323,8 @@
        printf("\nUsage: %s [OPTION] [driver.sys]\n", argv[0]);
        printf("  -l             List supported driver versions\n");
        printf("  -i DRIVER.SYS  Identify a driver file (don't extract)\n");
-       printf("  -w DRIVER.SYS  Extract and write firmware to 
/lib/firmware\n");
+       printf("  -w DRIVER.SYS  Extract and write firmware to " FIRMWARE_DIR 
"\n");
+       printf("  -d DIR         Write firmware to DIR instead of " 
FIRMWARE_DIR "\n");
        printf("  -p \".FOO\"      Postfix for firmware filenames (.FOO.fw)\n");
        printf("  -v             Print fwcutter version\n");
        printf("  -h|--help      Print this help\n");
@@ -399,9 +400,18 @@
                                printf("-w needs a parameter\n");
                                return -1;
                        }
-                       target_dir = "/lib/firmware";
                        cmdargs.infile = next_arg;
-               } else if (cmp_arg(arg, "-p", &param) == 0) {
+               } else if (cmp_arg(arg, "-d", &param) == 0) {
+            if (param)
+                next_arg = param;
+            else
+                i++;
+            if (!next_arg) {
+                printf ("-d needs a parameter\n");
+                return -1;
+            }
+            target_dir = next_arg;
+        } else if (cmp_arg(arg, "-p", &param) == 0) {
                        if (param)
                                next_arg = param;
                        else
@@ -435,7 +445,6 @@

        get_endianess();

-       target_dir = ".";
        cmdargs.postfix = "";
        err = parse_args(argc, argv);
        if (err == 1)
Index: Makefile
===================================================================
--- Makefile    (revision 754)
+++ Makefile    (working copy)
@@ -5,10 +5,11 @@
 CFLAGS = -std=c99 -O2 -fomit-frame-pointer -Wall -pedantic -D_BSD_SOURCE
 LDFLAGS =

+FIRMWARE_DIR ?= /lib/firmware

 OBJECTS = fwcutter.o md5.o

-CFLAGS += -DFWCUTTER_VERSION_=$(VERSION)
+CFLAGS += -DFWCUTTER_VERSION_=$(VERSION) -DFIRMWARE_DIR=\"$(FIRMWARE_DIR)\"

 all: fwcutter

@@ -22,8 +23,8 @@
        -rm -f *~ *.o *.orig *.rej *.fw fwcutter

 installfw:
-       -if ! [ -d /lib/firmware ]; then mkdir /lib/firmware; fi
-       -install -o 0 -g 0 -m 600 bcm430x_*.fw /lib/firmware/
+       -if ! [ -d $(FIRMWARE_DIR) ]; then mkdir $(FIRMWARE_DIR); fi
+       -install -o 0 -g 0 -m 600 bcm430x_*.fw $(FIRMWARE_DIR)

 # dependencies
 fwcutter.o: md5.h fwcutter_list.h

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
http://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to