examples/bitbang_cbus.c: Check return value of fgets()
[libftdi] / examples / bitbang_cbus.c
index f881f4c..359097e 100644 (file)
@@ -41,7 +41,6 @@ int main(void)
     unsigned char buf[1];
     unsigned char bitmask;
     char input[10];
-    int retval = 0;
 
     if ((ftdi = ftdi_new()) == 0)
     {
@@ -53,7 +52,7 @@ int main(void)
     if (f < 0 && f != -5)
     {
         fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(ftdi));
-        ftdi_deinit(ftdi);
+        ftdi_free(ftdi);
         exit(-1);
     }
     printf("ftdi open succeeded: %d\n",f);
@@ -61,8 +60,9 @@ int main(void)
     while (1)
     {
         // Set bitmask from input
-        fgets(input, sizeof(input) - 1, stdin);
-        if (input[0] == '\n') break;
+        char *s = fgets(input, sizeof(input) - 1, stdin);
+        if (s == NULL || input[0] == '\n')
+            break;
         bitmask = strtol(input, NULL, 0);
         printf("Using bitmask 0x%02x\n", bitmask);
         f = ftdi_set_bitmode(ftdi, bitmask, BITMODE_CBUS);
@@ -70,8 +70,8 @@ int main(void)
         {
             fprintf(stderr, "set_bitmode failed for 0x%x, error %d (%s)\n", bitmask, f, ftdi_get_error_string(ftdi));
             ftdi_usb_close(ftdi);
-            ftdi_deinit(ftdi);
-            retval = -1;
+            ftdi_free(ftdi);
+            exit(-1);
         }
 
         // read CBUS
@@ -80,7 +80,7 @@ int main(void)
         {
             fprintf(stderr, "read_pins failed, error %d (%s)\n", f, ftdi_get_error_string(ftdi));
             ftdi_usb_close(ftdi);
-            ftdi_deinit(ftdi);
+            ftdi_free(ftdi);
             exit(-1);
         }
         printf("Read returned 0x%01x\n", buf[0] & 0x0f);