Merge branch 'STABLE-BRANCH-2-2'
[gnupg.git] / tools / ccidmon.c
index 4c37306..d61bb3c 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 
@@ -45,6 +45,9 @@
 # define PACKAGE_BUGREPORT "devnull@example.org"
 #endif
 #define PGM "ccidmon"
+#ifndef GNUPG_NAME
+# define GNUPG_NAME "GnuPG"
+#endif
 
 /* Option flags. */
 static int verbose;
@@ -52,7 +55,7 @@ static int debug;
 static int skip_escape;
 static int usb_bus, usb_dev;
 static int sniffusb;
+
 
 /* Error counter.  */
 static int any_error;
@@ -94,10 +97,10 @@ enum {
 };
 
 
-#define digitp(p)   ((p) >= '0' && (p) <= '9')
+#define digitp(p)   (*(p) >= '0' && *(p) <= '9')
 #define hexdigitp(a) (digitp (a)                     \
-                      || ((a) >= 'A' && (a) <= 'F')  \
-                      || ((a) >= 'a' && (a) <= 'f'))
+                      || (*(a) >= 'A' && *(a) <= 'F')  \
+                      || (*(a) >= 'a' && *(a) <= 'f'))
 #define ascii_isspace(a) ((a)==' ' || (a)=='\n' || (a)=='\r' || (a)=='\t')
 #define xtoi_1(p)   ((p) <= '9'? ((p)- '0'): \
                      (p) <= 'F'? ((p)-'A'+10):((p)-'a'+10))
@@ -142,19 +145,19 @@ err (const char *format, ...)
 
 /* Convert a little endian stored 4 byte value into an unsigned
    integer. */
-static unsigned int 
+static unsigned int
 convert_le_u32 (const unsigned char *buf)
 {
-  return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); 
+  return buf[0] | (buf[1] << 8) | (buf[2] << 16) | ((unsigned int)buf[3] << 24);
 }
 
 
 /* Convert a little endian stored 2 byte value into an unsigned
    integer. */
-static unsigned int 
+static unsigned int
 convert_le_u16 (const unsigned char *buf)
 {
-  return buf[0] | (buf[1] << 8); 
+  return buf[0] | (buf[1] << 8);
 }
 
 
@@ -172,7 +175,7 @@ print_pr_data (const unsigned char *data, size_t datalen, size_t off)
         {
           if (needlf)
             putchar ('\n');
-          printf ("  [%04d] ", off);
+          printf ("  [%04lu] ", (unsigned long)off);
         }
       printf (" %02X", data[off]);
       needlf = 1;
@@ -182,7 +185,7 @@ print_pr_data (const unsigned char *data, size_t datalen, size_t off)
     putchar ('\n');
 }
 
+
 static void
 print_p2r_header (const char *name, const unsigned char *msg, size_t msglen)
 {
@@ -359,7 +362,7 @@ print_p2r_unknown (const unsigned char *msg, size_t msglen)
 {
   char buf[100];
 
-  snprintf (buf, sizeof buf, "Unknown PC_to_RDR command 0x%02X", 
+  snprintf (buf, sizeof buf, "Unknown PC_to_RDR command 0x%02X",
             msglen? msg[0]:0);
   print_p2r_header (buf, msg, msglen);
   if (msglen < 10)
@@ -466,7 +469,7 @@ print_r2p_slotstatus (const unsigned char *msg, size_t msglen)
           msg[9] == 3? " (stopped)":"");
   print_pr_data (msg, msglen, 10);
 }
-  
+
 
 static void
 print_r2p_parameters (const unsigned char *msg, size_t msglen)
@@ -527,7 +530,7 @@ print_r2p_unknown (const unsigned char *msg, size_t msglen)
 {
   char buf[100];
 
-  snprintf (buf, sizeof buf, "Unknown RDR_to_PC command 0x%02X", 
+  snprintf (buf, sizeof buf, "Unknown RDR_to_PC command 0x%02X",
             msglen? msg[0]:0);
   print_r2p_header (buf, msg, msglen);
   if (msglen < 10)
@@ -571,7 +574,7 @@ flush_data (void)
 {
   if (!databuffer.count)
     return;
-  
+
   if (verbose)
     printf ("Address: %s\n", databuffer.address);
   if (databuffer.is_bi)
@@ -608,14 +611,14 @@ collect_data (char *hexdata, const char *address, unsigned int lineno)
     {
       if (ascii_isspace (*s))
         continue;
-      if (!hexdigitp (*s))
+      if (!hexdigitp (s))
         {
           err ("invalid hex digit in line %u - line skipped", lineno);
           break;
         }
       value = xtoi_1 (*s) * 16;
       s++;
-      if (!hexdigitp (*s))
+      if (!hexdigitp (s))
         {
           err ("invalid hex digit in line %u - line skipped", lineno);
           break;
@@ -641,7 +644,7 @@ parse_line (char *line, unsigned int lineno)
   char *event_type, *address, *data, *status, *datatag;
 
   if (debug)
-    printf ("line[%u] =`%s'\n", lineno, line);
+    printf ("line[%u] ='%s'\n", lineno, line);
 
   p = strtok (line, " ");
   if (!p)
@@ -684,7 +687,7 @@ parse_line (char *line, unsigned int lineno)
   p = strtok (NULL, " ");
   if (!p)
     return; /* No data length.  */
-  
+
   datatag = strtok (NULL, " ");
   if (datatag && *datatag == '=')
     {
@@ -700,29 +703,29 @@ parse_line_sniffusb (char *line, unsigned int lineno)
   char *p;
 
   if (debug)
-    printf ("line[%u] =`%s'\n", lineno, line);
+    printf ("line[%u] ='%s'\n", lineno, line);
 
-  p = strtok (line, " ");
+  p = strtok (line, " \t");
   if (!p)
     return;
-  p = strtok (NULL, " ");
+  p = strtok (NULL, " \t");
   if (!p)
-    return; 
-  p = strtok (NULL, " ");
+    return;
+  p = strtok (NULL, " \t");
   if (!p)
-    return; 
+    return;
 
-  if (hexdigitp (p[0]) && hexdigitp (p[1])
-      && hexdigitp (p[2]) && hexdigitp (p[3])
+  if (hexdigitp (p+0) && hexdigitp (p+1)
+      && hexdigitp (p+2) && hexdigitp (p+3)
       && p[4] == ':' && !p[5])
     {
       size_t length;
       unsigned int value;
-      
+
       length = databuffer.count;
-      while ((p=strtok (NULL, " ")))
+      while ((p=strtok (NULL, " \t")))
         {
-          if (!hexdigitp (p[0]) || !hexdigitp (p[1]))
+          if (!hexdigitp (p+0) || !hexdigitp (p+1))
             {
               err ("invalid hex digit in line %u (%s)", lineno,p);
               break;
@@ -745,7 +748,7 @@ parse_line_sniffusb (char *line, unsigned int lineno)
       flush_data ();
 
       *databuffer.address = 0;
-      while ((p=strtok (NULL, " (,)")))
+      while ((p=strtok (NULL, " \t(,)")))
         {
           if (!strcmp (p, "USBD_TRANSFER_DIRECTION_IN"))
             {
@@ -791,7 +794,7 @@ parse_input (FILE *fp)
 }
 
 
-int 
+int
 main (int argc, char **argv)
 {
   int last_argc = -1;
@@ -810,7 +813,7 @@ main (int argc, char **argv)
         }
       else if (!strcmp (*argv, "--version"))
         {
-          fputs (PGM " (GnuPG) " PACKAGE_VERSION "\n", stdout);
+          fputs (PGM " (" GNUPG_NAME ") " PACKAGE_VERSION "\n", stdout);
           exit (0);
         }
       else if (!strcmp (*argv, "--help"))
@@ -845,7 +848,7 @@ main (int argc, char **argv)
           sniffusb = 1;
           argc--; argv++;
         }
-    }          
+    }
 
   if (argc && sniffusb)
     die ("no arguments expected when using --sniffusb\n");
@@ -855,14 +858,14 @@ main (int argc, char **argv)
   if (argc == 1)
     {
       const char *s = strchr (argv[0], ':');
-      
+
       usb_bus = atoi (argv[0]);
       if (s)
         usb_dev =  atoi (s+1);
       if (usb_bus < 1 || usb_bus > 999 || usb_dev < 1 || usb_dev > 999)
         die ("invalid bus:dev specified");
     }
-  
+
 
   signal (SIGPIPE, SIG_IGN);