tests: Improve portability of fake-pinentry.
authorWerner Koch <wk@gnupg.org>
Wed, 26 Oct 2016 06:34:18 +0000 (08:34 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 26 Oct 2016 06:34:18 +0000 (08:34 +0200)
* tests/openpgp/fake-pinentry.c: Make all functions static.
(get_passphrase): s/unlink/remove/ because that is standard C.
(spacep): Rename to whitespace and change all callers.
(main): Move macro out of if-then chain.

Signed-off-by: Werner Koch <wk@gnupg.org>
tests/openpgp/fake-pinentry.c

index 90e086c..13dc6d9 100644 (file)
 #include <stdarg.h>
 #include <unistd.h>
 
-FILE *log_stream;
+static FILE *log_stream;
 
-int
+
+static int
 reply (const char *fmt, ...)
 {
   int result;
@@ -48,8 +49,9 @@ reply (const char *fmt, ...)
   return result;
 }
 
+
 /* Return the first line from FNAME, removing it from the file.  */
-char *
+static char *
 get_passphrase (const char *fname)
 {
   char *passphrase = NULL;
@@ -111,7 +113,7 @@ get_passphrase (const char *fname)
 
   fclose (source);
   fclose (sink);
-  if (unlink (fname))
+  if (remove (fname))
     {
       fprintf (stderr, "Failed to remove %s: %s",
                fname, strerror (errno));
@@ -128,17 +130,19 @@ get_passphrase (const char *fname)
 }
 
 \f
-#define spacep(p)   (*(p) == ' ' || *(p) == '\t' \
-                     || *(p) == '\r' || *(p) == '\n')
+#define whitespacep(p)   (*(p) == ' ' || *(p) == '\t' \
+                          || *(p) == '\r' || *(p) == '\n')
 
 /* rstrip line.  */
-void
+static void
 rstrip (char *buffer)
 {
   char *p;
+  if (!*buffer)
+    return; /* This is to avoid p = buffer - 1 */
   for (p = buffer + strlen (buffer) - 1; p >= buffer; p--)
     {
-      if (! spacep (p))
+      if (! whitespacep (p))
         break;
       *p = 0;
     }
@@ -155,13 +159,13 @@ rstrip (char *buffer)
 char *
 skip_options (const char *line)
 {
-  while (spacep (line))
+  while (whitespacep (line))
     line++;
   while (*line == '-' && line[1] == '-')
     {
-      while (*line && !spacep (line))
+      while (*line && !whitespacep (line))
         line++;
-      while (spacep (line))
+      while (whitespacep (line))
         line++;
     }
   return (char*) line;
@@ -179,12 +183,12 @@ option_value (const char *line, const char *name)
   s = strstr (line, name);
   if (s && s >= skip_options (line))
     return NULL;
-  if (s && (s == line || spacep (s-1))
-      && s[n] && (spacep (s+n) || s[n] == '='))
+  if (s && (s == line || whitespacep (s-1))
+      && s[n] && (whitespacep (s+n) || s[n] == '='))
     {
       s += n + 1;
       s += strspn (s, " ");
-      if (*s && !spacep(s))
+      if (*s && !whitespacep(s))
         return s;
     }
   return NULL;
@@ -207,7 +211,7 @@ main (int argc, char **argv)
   setvbuf (stdout, NULL, _IOLBF, BUFSIZ);
 
   args = getenv ("PINENTRY_USER_DATA");
-  got_environment_user_data = args != NULL;
+  got_environment_user_data = !!args;
   if (! args)
     args = "";
 
@@ -216,7 +220,7 @@ main (int argc, char **argv)
   if (logfile)
     {
       char *p = logfile, more;
-      while (*p && ! spacep (p))
+      while (*p && ! whitespacep (p))
         p++;
       more = !! *p;
       *p = 0;
@@ -234,7 +238,7 @@ main (int argc, char **argv)
   if (passphrasefile)
     {
       char *p = passphrasefile, more;
-      while (*p && ! spacep (p))
+      while (*p && ! whitespacep (p))
         p++;
       more = !! *p;
       *p = 0;
@@ -257,13 +261,13 @@ main (int argc, char **argv)
         passphrase = "no PINENTRY_USER_DATA -- using default passphrase";
     }
 
-  reply ("# fake-pinentry(%d) started.  Passphrase='%s'.\n",
-         getpid (), passphrase);
+  reply ("# fake-pinentry(%u) started.  Passphrase='%s'.\n",
+         (unsigned int)getpid (), passphrase);
   reply ("OK - what's up?\n");
 
   while (! feof (stdin))
     {
-      char buffer[1024], *p;
+      char buffer[1024];
 
       if (fgets (buffer, sizeof buffer, stdin) == NULL)
        break;
@@ -273,6 +277,8 @@ main (int argc, char **argv)
 
       rstrip (buffer);
 
+#define OPT_USER_DATA  "OPTION pinentry-user-data="
+
       if (strncmp (buffer, "GETPIN", 6) == 0)
         reply ("D %s\n", passphrase);
       else if (strncmp (buffer, "BYE", 3) == 0)
@@ -280,7 +286,6 @@ main (int argc, char **argv)
          reply ("OK\n");
          break;
        }
-#define OPT_USER_DATA  "OPTION pinentry-user-data="
       else if (strncmp (buffer, OPT_USER_DATA, strlen (OPT_USER_DATA)) == 0)
         {
           if (got_environment_user_data)
@@ -300,6 +305,8 @@ main (int argc, char **argv)
       reply ("OK\n");
     }
 
+#undef OPT_USER_DATA
+
   reply ("# Connection terminated.\n");
   if (log_stream)
     fclose (log_stream);