python: Make EXTRA_DIST files explicit
[gpgme.git] / tests / t-data.c
index 882ffc8..ea70f04 100644 (file)
@@ -1,31 +1,39 @@
 /* t-data - Regression tests for the gpgme_data_t abstraction.
- *      Copyright (C) 2001 g10 Code GmbH
+ * Copyright (C) 2001, 2004 g10 Code GmbH
  *
  * This file is part of GPGME.
  *
- * GPGME is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * GPGME is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
  *
- * GPGME is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * GPGME is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, see <https://gnu.org/licenses/>.
+ * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+/* We need to include config.h so that we know whether we are building
+   with large file system (LFS) support. */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
 
-#include <gpgme.h>
+#define PGM "t-data"
+#include "run-support.h"
 
+#undef fail_if_err
 #define fail_if_err(a) do { if(a) {                                          \
                                fprintf (stderr, "%s:%d: (%i) gpgme_error_t " \
                                 "%s\n", __FILE__, __LINE__, round,           \
                                 exit (1); }                                  \
                              } while(0)
 
-static char *
-make_filename (const char *fname)
-{
-  const char *srcdir = getenv ("srcdir");
-  char *buf;
-
-  if (!srcdir)
-    srcdir = ".";
-  buf = malloc (strlen(srcdir) + strlen(fname) + 2 );
-  if (!buf)
-    {
-      fprintf (stderr, "%s:%d: could not allocate string: %s\n",
-              __FILE__, __LINE__, strerror (errno));
-      exit (1);
-    }
-  strcpy (buf, srcdir);
-  strcat (buf, "/");
-  strcat (buf, fname);
-  return buf;
-}
-
 typedef enum
   {
     TEST_INITIALIZER,
@@ -77,9 +64,11 @@ int
 read_cb (void *cb_value, char *buffer, size_t count, size_t *nread)
 {
   static int off = 0;
-  int amount = strlen (text) - off;
+  unsigned int amount = strlen (text) - off;
   /*  round_t round = *((round_t *) cb_value);  */
 
+  (void)cb_value;
+
   if (!buffer && !count && !nread)
     {
       /* Rewind requested.  */
@@ -137,7 +126,7 @@ read_test (round_t round, gpgme_data_t data)
       read = gpgme_data_read (data, buffer, sizeof (buffer));
       if (read > 0)
        {
-         fprintf (stderr, "%s:%d: (%i) gpgme_data_read succeded unexpectedly\n",
+         fprintf (stderr, "%s:%d: (%i) gpgme_data_read succeeded unexpectedly\n",
                   __FILE__, __LINE__, round);
          exit (1);
        }
@@ -157,7 +146,7 @@ write_test (round_t round, gpgme_data_t data)
 
   amt = gpgme_data_write (data, text, strlen (text));
   if (amt != strlen (text))
-    fail_if_err (gpg_error_from_errno (errno));
+    fail_if_err (gpgme_error_from_errno (errno));
 
   gpgme_data_seek (data, 0, SEEK_SET);
 
@@ -184,16 +173,19 @@ write_test (round_t round, gpgme_data_t data)
     }
 }
 
-int 
-main (int argc, char **argv)
+
+int
+main (void)
 {
   round_t round = TEST_INITIALIZER;
-  const char *text_filename = make_filename ("t-data-1.txt");
-  const char *longer_text_filename = make_filename ("t-data-2.txt");
+  char *text_filename = make_filename ("t-data-1.txt");
+  char *longer_text_filename = make_filename ("t-data-2.txt");
   const char *missing_filename = "this-file-surely-does-not-exist";
   gpgme_error_t err = 0;
   gpgme_data_t data;
 
+  init_gpgme_basic ();
+
   while (++round)
     {
       switch (round)
@@ -231,8 +223,8 @@ main (int argc, char **argv)
        case TEST_INOUT_MEM_FROM_FILE_NO_COPY:
          err = gpgme_data_new_from_file (&data, text_filename, 0);
          /* This is not implemented yet.  */
-         if (gpg_err_code (err) == GPG_ERR_NOT_IMPLEMENTED
-             || gpg_err_code (err) == GPG_ERR_INV_VALUE)
+         if (gpgme_err_code (err) == GPG_ERR_NOT_IMPLEMENTED
+             || gpgme_err_code (err) == GPG_ERR_INV_VALUE)
            continue;
          break;
        case TEST_INOUT_MEM_FROM_FILE_PART_BY_NAME:
@@ -263,7 +255,7 @@ main (int argc, char **argv)
          }
          break;
        case TEST_END:
-         return 0;
+         goto out;
        case TEST_INITIALIZER:
          /* Shouldn't happen.  */
          fprintf (stderr, "%s:%d: impossible condition\n", __FILE__, __LINE__);
@@ -275,5 +267,8 @@ main (int argc, char **argv)
       write_test (round, data);
       gpgme_data_release (data);
     }
+ out:
+  free (text_filename);
+  free (longer_text_filename);
   return 0;
 }