ftdi_eeprom: Add --build-eeprom support
[libftdi] / ftdi_eeprom / main.c
index edcfad7..32d7119 100644 (file)
@@ -35,6 +35,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <errno.h>
 
 #include <confuse.h>
 #include <libusb.h>
@@ -184,6 +185,7 @@ static void usage(const char *program)
     fprintf(stderr, "         i:<vendor>:<product>:<index>\n");
     fprintf(stderr, "         s:<vendor>:<product>:<serial>\n");
     fprintf(stderr, "--read-eeprom           Read eeprom and write to -filename- from config-file\n");
+    fprintf(stderr, "--build-eeprom          Build eeprom image\n");
     fprintf(stderr, "--erase-eeprom          Erase eeprom\n");
     fprintf(stderr, "--flash-eeprom          Flash eeprom\n");
 }
@@ -251,6 +253,7 @@ int main(int argc, char *argv[])
         CFG_BOOL("chb_rs485", cfg_false, 0),
         CFG_BOOL("chc_rs485", cfg_false, 0),
         CFG_BOOL("chd_rs485", cfg_false, 0),
+        CFG_FUNC("include", &cfg_include),
         CFG_END()
     };
     cfg_t *cfg;
@@ -261,7 +264,8 @@ int main(int argc, char *argv[])
     enum {
         COMMAND_READ = 1,
         COMMAND_ERASE,
-        COMMAND_FLASH
+        COMMAND_FLASH,
+        COMMAND_BUILD
     } command = 0;
     const char *cfg_filename = NULL;
     const char *device_description = NULL;
@@ -305,6 +309,10 @@ int main(int argc, char *argv[])
         {
             command = COMMAND_FLASH;
         }
+        else if (!strcmp(argv[i], "--build-eeprom"))
+        {
+            command = COMMAND_BUILD;
+        }
         else
         {
             usage(argv[0]);
@@ -395,10 +403,15 @@ int main(int argc, char *argv[])
         }
         if (filename != NULL && strlen(filename) > 0)
         {
-
             FILE *fp = fopen (filename, "wb");
-            fwrite (eeprom_buf, 1, my_eeprom_size, fp);
-            fclose (fp);
+            
+            if(fp)
+            {
+                fwrite(eeprom_buf, 1, my_eeprom_size, fp);
+                fclose(fp);
+            }
+            else
+                fprintf(stderr, "Could not open output file %s: %s\n", filename, strerror(errno));
         }
         else
         {