Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / ao-tools / ao-load / ao-load.c
index 6966dd3a98bf2909f6bd294e0b26ab6163316016..642af2fed7ada02beccf08c2fe4e1fe35c9b1e3a 100644 (file)
 
 #define AO_USB_DESC_STRING             3
 
-void
-usage(char *program)
-{
-       fprintf(stderr, "usage: %s <filename.ihx> <serial>\n", program);
-       exit(1);
-}
-
 struct sym {
        unsigned        addr;
        char            *name;
@@ -96,7 +89,21 @@ rewrite(struct hex_image *image, unsigned addr, char *data, int len)
        memcpy(image->data + addr - image->address, data, len);
 }
 
+<<<<<<< HEAD:ao-tools/ao-load/ao-load.c
 static const struct option
+=======
+static const struct option options[] = {
+       { .name = "tty", .has_arg = 1, .val = 'T' },
+       { 0, 0, 0, 0},
+};
+
+static void usage(char *program)
+{
+       fprintf(stderr, "usage: %s [--tty <tty-name>] file.ihx serial-number\n", program);
+       exit(1);
+}
+
+>>>>>>> c29275b72438637d46d7a50742882d2736eb176a:ao-tools/ao-load/ao-load.c
 int
 main (int argc, char **argv)
 {
@@ -105,12 +112,12 @@ main (int argc, char **argv)
        uint16_t        pc;
        struct hex_file *hex;
        struct hex_image *image;
-       char *filename;
-       FILE *file;
-       FILE *map;
-       char *serial_string;
-       unsigned int serial;
-       char *mapname, *dot;
+       char            *filename;
+       FILE            *file;
+       FILE            *map;
+       char            *serial_string;
+       unsigned int    serial;
+       char            *mapname, *dot;
        char            *serial_ucs2;
        int             serial_ucs2_len;
        char            serial_int[2];
@@ -118,8 +125,20 @@ main (int argc, char **argv)
        int             i;
        unsigned        usb_descriptors;
        int             string_num;
-
-       filename = argv[1];
+       char            *tty = NULL;
+       int             c;
+
+       while ((c = getopt_long(argc, argv, "T:", options, NULL)) != -1) {
+               switch (c) {
+               case 'T':
+                       tty = optarg;
+                       break;
+               default:
+                       usage(argv[0]);
+                       break;
+               }
+       }
+       filename = argv[optind];
        if (filename == NULL)
                usage(argv[0]);
        mapname = strdup(filename);
@@ -128,7 +147,7 @@ main (int argc, char **argv)
                usage(argv[0]);
        strcpy(dot, ".map");
 
-       serial_string = argv[2];
+       serial_string = argv[optind + 1];
        if (serial_string == NULL)
                usage(argv[0]);
 
@@ -163,7 +182,7 @@ main (int argc, char **argv)
 
        serial = strtoul(serial_string, NULL, 0);
        if (!serial)
-               usage(argv[0]);
+(argv[0]);
 
        serial_int[0] = serial & 0xff;
        serial_int[1] = (serial >> 8) & 0xff;
@@ -204,7 +223,7 @@ main (int argc, char **argv)
        if (!rewrite(image, usb_descriptors + 2 + image->address, serial_ucs2, serial_ucs2_len))
                usage(argv[0]);
 
-       dbg = ccdbg_open();
+       dbg = ccdbg_open(tty);
        if (!dbg)
                exit (1);