gpgscm: Fail early if the test setup fails.
[gnupg.git] / tests / asschk.c
index ec338e7..2595c0a 100644 (file)
  * 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/>.
  */
 
 /* This is a simple stand-alone Assuan server test program.  We don't
    want to use the assuan library because we don't want to hide errors
-   in that library. 
+   in that library.
 
    The script language is line based.  Empty lines or lines containing
    only white spaces are ignored, line with a hash sign as first non
    white space character are treated as comments.
-   
+
    A simple macro mechanism is implemnted.  Macros are expanded before
    a line is processed but after comment processing.  Macros are only
    expanded once and non existing macros expand to the empty string.
@@ -79,7 +79,7 @@
       is ignored.
 
    count-status <code>
-      Initialize the assigned variable to 0 and assign it as an counter for 
+      Initialize the assigned variable to 0 and assign it as an counter for
       status code CODE.  This command must be called with an assignment.
 
    quit
@@ -252,7 +252,7 @@ writen (int fd, const char *buffer, size_t length)
   while (length)
     {
       int nwritten = write (fd, buffer, length);
-      
+
       if (nwritten < 0)
         {
           if (errno == EINTR)
@@ -306,7 +306,7 @@ read_assuan (int fd)
             }
           while (n < 0 && errno == EINTR);
         }
-      
+
       if (opt_verbose && n >= 0 )
        {
          int i;
@@ -324,7 +324,7 @@ read_assuan (int fd)
       p = buf;
       nleft -= n;
       buf += n;
-      
+
       for (; n && *p != '\n'; n--, p++)
         ;
       if (n)
@@ -369,7 +369,7 @@ read_assuan (int fd)
       recv_type = LINE_END;
       p += 3;
     }
-  else 
+  else
     die_1 ("invalid line type (%.5s)", p);
 
   return p;
@@ -443,7 +443,7 @@ start_server (const char *pgmname)
         {
          int fd = open ("/dev/null", O_WRONLY);
          if (fd == -1)
-           die_1 ("can't open `/dev/null': %s", strerror (errno));
+           die_1 ("can't open '/dev/null': %s", strerror (errno));
           if (dup2 (fd, STDERR_FILENO) == -1)
             die_1 ("dup2 failed in child: %s", strerror (errno));
          close (fd);
@@ -451,8 +451,8 @@ start_server (const char *pgmname)
 
       close (wp[1]);
       close (rp[0]);
-      execl (pgmname, arg0, "--server", NULL); 
-      die_2 ("exec failed for `%s': %s", pgmname, strerror (errno));
+      execl (pgmname, arg0, "--server", NULL);
+      die_2 ("exec failed for '%s': %s", pgmname, strerror (errno));
     }
   close (wp[0]);
   close (rp[1]);
@@ -479,7 +479,7 @@ unset_var (const char *name)
     ;
   if (!var)
     return;
-/*    fprintf (stderr, "unsetting `%s'\n", name); */
+/*    fprintf (stderr, "unsetting '%s'\n", name); */
 
   if (var->type == VARTYPE_FD && var->value)
     {
@@ -503,7 +503,7 @@ set_type_var (const char *name, const char *value, VARTYPE type)
   VARIABLE var;
 
   if (!name)
-    name = "?"; 
+    name = "?";
   for (var=variable_list; var && strcmp (var->name, name); var = var->next)
     ;
   if (!var)
@@ -514,7 +514,10 @@ set_type_var (const char *name, const char *value, VARTYPE type)
       variable_list = var;
     }
   else
-    free (var->value);
+    {
+      free (var->value);
+      var->value = NULL;
+    }
 
   if (var->type == VARTYPE_FD && var->value)
     {
@@ -524,7 +527,7 @@ set_type_var (const char *name, const char *value, VARTYPE type)
       if (fd != -1 && fd != 0 && fd != 1 && fd != 2)
           close (fd);
     }
-  
+
   var->type = type;
   var->count = 0;
   if (var->type == VARTYPE_COUNTER)
@@ -598,7 +601,7 @@ expand_line (char *buffer)
       p = strchr (line, '$');
       if (!p)
         return result; /* nothing more to expand */
-      
+
       if (p[1] == '$') /* quoted */
         {
           memmove (p, p+1, strlen (p+1)+1);
@@ -650,7 +653,7 @@ expand_line (char *buffer)
 
 
 /* Evaluate COND and return the result. */
-static int 
+static int
 eval_boolean (const char *cond)
 {
   int true = 1;
@@ -686,8 +689,8 @@ cmd_send (const char *assign_to, char *arg)
 {
   (void)assign_to;
   if (opt_verbose)
-    fprintf (stderr, "sending `%s'\n", arg);
-  write_assuan (server_send_fd, arg); 
+    fprintf (stderr, "sending '%s'\n", arg);
+  write_assuan (server_send_fd, arg);
 }
 
 static void
@@ -720,13 +723,13 @@ cmd_expect_ok (const char *assign_to, char *arg)
     {
       char *p = read_assuan (server_recv_fd);
       if (opt_verbose > 1)
-        fprintf (stderr, "got line `%s'\n", recv_line);
+        fprintf (stderr, "got line '%s'\n", recv_line);
       if (recv_type == LINE_STAT)
         handle_status_line (p);
     }
   while (recv_type != LINE_OK && recv_type != LINE_ERR);
   if (recv_type != LINE_OK)
-    die_1 ("expected OK but got `%s'", recv_line);
+    die_1 ("expected OK but got '%s'", recv_line);
 }
 
 static void
@@ -741,13 +744,13 @@ cmd_expect_err (const char *assign_to, char *arg)
     {
       char *p = read_assuan (server_recv_fd);
       if (opt_verbose > 1)
-        fprintf (stderr, "got line `%s'\n", recv_line);
+        fprintf (stderr, "got line '%s'\n", recv_line);
       if (recv_type == LINE_STAT)
         handle_status_line (p);
     }
   while (recv_type != LINE_OK && recv_type != LINE_ERR);
   if (recv_type != LINE_ERR)
-    die_1 ("expected ERR but got `%s'", recv_line);
+    die_1 ("expected ERR but got '%s'", recv_line);
 }
 
 static void
@@ -776,12 +779,12 @@ cmd_openfile (const char *assign_to, char *arg)
   int fd;
   char numbuf[20];
 
-  do 
+  do
     fd = open (arg, O_RDONLY);
   while (fd == -1 && errno == EINTR);
   if (fd == -1)
-    die_2 ("error opening `%s': %s", arg, strerror (errno));
-  
+    die_2 ("error opening '%s': %s", arg, strerror (errno));
+
   sprintf (numbuf, "%d", fd);
   set_type_var (assign_to, numbuf, VARTYPE_FD);
 }
@@ -792,11 +795,11 @@ cmd_createfile (const char *assign_to, char *arg)
   int fd;
   char numbuf[20];
 
-  do 
+  do
     fd = open (arg, O_WRONLY|O_CREAT|O_TRUNC, 0666);
   while (fd == -1 && errno == EINTR);
   if (fd == -1)
-    die_2 ("error creating `%s': %s", arg, strerror (errno));
+    die_2 ("error creating '%s': %s", arg, strerror (errno));
 
   sprintf (numbuf, "%d", fd);
   set_type_var (assign_to, numbuf, VARTYPE_FD);
@@ -845,7 +848,7 @@ cmd_cmpfiles (const char *assign_to, char *arg)
   size_t nread1, nread2;
   int rc = 0;
 
-  set_var (assign_to, "0"); 
+  set_var (assign_to, "0");
   for (p=arg; *p && !spacep (p); p++)
     ;
   if (!*p)
@@ -862,17 +865,17 @@ cmd_cmpfiles (const char *assign_to, char *arg)
       if (*p)
         die_0 ("cmpfiles: syntax error");
     }
-  
+
   fp1 = fopen (arg, "rb");
   if (!fp1)
     {
-      err ("can't open `%s': %s", arg, strerror (errno));
+      err ("can't open '%s': %s", arg, strerror (errno));
       return;
     }
   fp2 = fopen (second, "rb");
   if (!fp2)
     {
-      err ("can't open `%s': %s", second, strerror (errno));
+      err ("can't open '%s': %s", second, strerror (errno));
       fclose (fp1);
       return;
     }
@@ -893,7 +896,7 @@ cmd_cmpfiles (const char *assign_to, char *arg)
     {
       if (opt_verbose)
         err ("files match");
-      set_var (assign_to, "1"); 
+      set_var (assign_to, "1");
     }
   else if (!rc)
     err ("cmpfiles: read error: %s", strerror (errno));
@@ -1006,7 +1009,7 @@ interpreter (char *line)
   if (!cmdtbl[i].name)
     {
       if (!assign_to)
-        die_1 ("invalid statement `%s'\n", stmt);
+        die_1 ("invalid statement '%s'\n", stmt);
       if (save_p)
         *save_p = save_c;
       set_var (assign_to, stmt);
@@ -1089,4 +1092,3 @@ main (int argc, char **argv)
     }
   return 0;
 }
-