typoes
[exim.git] / src / src / exim_dbmbuild.c
index 85bc3fd8808ce36f72e8b910268412c3fc8e6e6a..bd24faa5b9d4e9e721fa35061e9d1bd3f5bfdc4c 100644 (file)
@@ -2,8 +2,10 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2023 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 
 
 /* A small freestanding program to build dbm databases from serial input. For
 
 
 /* A small freestanding program to build dbm databases from serial input. For
@@ -30,7 +32,7 @@ characters. */
 
 #include "exim.h"
 
 
 #include "exim.h"
 
-uschar * spool_directory = NULL;       /* dummy for dbstuff.h */
+uschar * spool_directory = NULL;       /* dummy for hintsdb.h */
 
 /******************************************************************************/
                                        /* dummies needed by Solaris build */
 
 /******************************************************************************/
                                        /* dummies needed by Solaris build */
@@ -41,26 +43,47 @@ uschar *
 readconf_printtime(int t)
 { return NULL; }
 void *
 readconf_printtime(int t)
 { return NULL; }
 void *
-store_get_3(int size, BOOL tainted, const char *filename, int linenumber)
+store_get_3(int size, const void * proto_mem, const char *filename, int linenumber)
 { return NULL; }
 void **
 { return NULL; }
 void **
-store_reset_3(void **ptr, int pool, const char *filename, int linenumber)
+store_reset_3(void **ptr, const char *filename, int linenumber)
 { return NULL; }
 void
 store_release_above_3(void *ptr, const char *func, int linenumber)
 { }
 gstring *
 { return NULL; }
 void
 store_release_above_3(void *ptr, const char *func, int linenumber)
 { }
 gstring *
+string_catn(gstring * g, const uschar * s, int count)
+{ return NULL; }
+gstring *
 string_vformat_trc(gstring * g, const uschar * func, unsigned line,
   unsigned size_limit, unsigned flags, const char *format, va_list ap)
 { return NULL; }
 uschar *
 string_sprintf_trc(const char * a, const uschar * b, unsigned c, ...)
 { return NULL; }
 string_vformat_trc(gstring * g, const uschar * func, unsigned line,
   unsigned size_limit, unsigned flags, const char *format, va_list ap)
 { return NULL; }
 uschar *
 string_sprintf_trc(const char * a, const uschar * b, unsigned c, ...)
 { return NULL; }
+BOOL
+string_format_trc(uschar * buf, int len, const uschar * func, unsigned line,
+  const char * fmt, ...)
+{ return FALSE; }
+void
+log_write(unsigned int selector, int flags, const char *format, ...)
+{ }
+
 
 struct global_flags    f;
 unsigned int           log_selector[1];
 uschar *               queue_name;
 BOOL                   split_spool_directory;
 
 struct global_flags    f;
 unsigned int           log_selector[1];
 uschar *               queue_name;
 BOOL                   split_spool_directory;
+
+
+/* These introduced by the taintwarn handling */
+rmark
+store_mark_3(const char *func, int linenumber)
+{ return NULL; }
+#ifdef ALLOW_INSECURE_TAINTED_DATA
+BOOL    allow_insecure_tainted_data;
+#endif
+
 /******************************************************************************/
 
 
 /******************************************************************************/
 
 
@@ -87,26 +110,6 @@ return sys_errlist[n];
 #endif /* STRERROR_FROM_ERRLIST */
 
 
 #endif /* STRERROR_FROM_ERRLIST */
 
 
-/* For Berkeley DB >= 2, we can define a function to be called in case of DB
-errors. This should help with debugging strange DB problems, e.g. getting "File
-exists" when you try to open a db file. The API changed at release 4.3. */
-
-#if defined(USE_DB) && defined(DB_VERSION_STRING)
-void
-#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 3)
-dbfn_bdb_error_callback(const DB_ENV *dbenv, const char *pfx, const char *msg)
-{
-dbenv = dbenv;
-#else
-dbfn_bdb_error_callback(const char *pfx, char *msg)
-{
-#endif
-pfx = pfx;
-printf("Berkeley DB error: %s\n", msg);
-}
-#endif
-
-
 
 /*************************************************
 *          Interpret escape sequence             *
 
 /*************************************************
 *          Interpret escape sequence             *
@@ -207,14 +210,12 @@ if (argc != 3)
   exit(1);
   }
 
   exit(1);
   }
 
-if (Ustrcmp(argv[arg], "-") == 0) f = stdin; else
+if (Ustrcmp(argv[arg], "-") == 0)
+  f = stdin;
+else if (!(f = fopen(argv[arg], "rb")))
   {
   {
-  f = fopen(argv[arg], "rb");
-  if (f == NULL)
-    {
-    printf("exim_dbmbuild: unable to open %s: %s\n", argv[arg], strerror(errno));
-    exit(1);
-    }
+  printf("exim_dbmbuild: unable to open %s: %s\n", argv[arg], strerror(errno));
+  exit(1);
   }
 
 /* By default Berkeley db does not put extensions on... which
   }
 
 /* By default Berkeley db does not put extensions on... which
@@ -249,9 +250,7 @@ else
 /* It is apparently necessary to open with O_RDWR for this to work
 with gdbm-1.7.3, though no reading is actually going to be done. */
 
 /* It is apparently necessary to open with O_RDWR for this to work
 with gdbm-1.7.3, though no reading is actually going to be done. */
 
-EXIM_DBOPEN(temp_dbmname, dirname, O_RDWR|O_CREAT|O_EXCL, 0644, &d);
-
-if (d == NULL)
+if (!(d = exim_dbopen(temp_dbmname, dirname, O_RDWR|O_CREAT|O_EXCL, 0644)))
   {
   printf("exim_dbmbuild: unable to create %s: %s\n", temp_dbmname,
     strerror(errno));
   {
   printf("exim_dbmbuild: unable to create %s: %s\n", temp_dbmname,
     strerror(errno));
@@ -330,11 +329,11 @@ while (Ufgets(line, max_insize, f) != NULL)
 
     if (started)
       {
 
     if (started)
       {
-      EXIM_DATUM_INIT(content);
-      EXIM_DATUM_DATA(content) = CS buffer;
-      EXIM_DATUM_SIZE(content) = bptr - buffer + add_zero;
+      exim_datum_init(&content);
+      exim_datum_data_set(&content, buffer);
+      exim_datum_size_set(&content, bptr - buffer + add_zero);
 
 
-      switch(rc = EXIM_DBPUTB(d, key, content))
+      switch(rc = exim_dbputb(d, &key, &content))
         {
         case EXIM_DBPUTB_OK:
          count++;
         {
         case EXIM_DBPUTB_OK:
          count++;
@@ -344,7 +343,7 @@ while (Ufgets(line, max_insize, f) != NULL)
          if (warn) fprintf(stderr, "** Duplicate key \"%s\"\n", keybuffer);
          dupcount++;
          if(duperr) yield = 1;
          if (warn) fprintf(stderr, "** Duplicate key \"%s\"\n", keybuffer);
          dupcount++;
          if(duperr) yield = 1;
-         if (lastdup) EXIM_DBPUT(d, key, content);
+         if (lastdup) exim_dbput(d, &key, &content);
          break;
 
         default:
          break;
 
         default:
@@ -357,8 +356,8 @@ while (Ufgets(line, max_insize, f) != NULL)
       bptr = buffer;
       }
 
       bptr = buffer;
       }
 
-    EXIM_DATUM_INIT(key);
-    EXIM_DATUM_DATA(key) = CS keybuffer;
+    exim_datum_init(&key);
+    exim_datum_data_set(&key, keybuffer);
 
     /* Deal with quoted keys. Escape sequences always make one character
     out of several, so we can re-build in place. */
 
     /* Deal with quoted keys. Escape sequences always make one character
     out of several, so we can re-build in place. */
@@ -375,16 +374,16 @@ while (Ufgets(line, max_insize, f) != NULL)
         s++;
         }
       if (*s != 0) s++;               /* Past terminating " */
         s++;
         }
       if (*s != 0) s++;               /* Past terminating " */
-      EXIM_DATUM_SIZE(key) = t - keystart + add_zero;
+      exim_datum_size_set(&key, t - keystart + add_zero);
       }
     else
       {
       keystart = s;
       }
     else
       {
       keystart = s;
-      while (*s != 0 && *s != ':' && !isspace(*s)) s++;
-      EXIM_DATUM_SIZE(key) = s - keystart + add_zero;
+      while (*s && *s != ':' && !isspace(*s)) s++;
+      exim_datum_size_set(&key, s - keystart + add_zero);
       }
 
       }
 
-    if (EXIM_DATUM_SIZE(key) > 256)
+    if (exim_datum_size_get(&key) > 256)
       {
       printf("Keys longer than 255 characters cannot be handled\n");
       started = 0;
       {
       printf("Keys longer than 255 characters cannot be handled\n");
       started = 0;
@@ -393,20 +392,20 @@ while (Ufgets(line, max_insize, f) != NULL)
       }
 
     if (lowercase)
       }
 
     if (lowercase)
-      for (i = 0; i < EXIM_DATUM_SIZE(key) - add_zero; i++)
+      for (i = 0; i < exim_datum_size_get(&key) - add_zero; i++)
         keybuffer[i] = tolower(keystart[i]);
     else
         keybuffer[i] = tolower(keystart[i]);
     else
-      for (i = 0; i < EXIM_DATUM_SIZE(key) - add_zero; i++)
+      for (i = 0; i < exim_datum_size_get(&key) - add_zero; i++)
         keybuffer[i] = keystart[i];
 
     keybuffer[i] = 0;
     started = 1;
 
         keybuffer[i] = keystart[i];
 
     keybuffer[i] = 0;
     started = 1;
 
-    while (isspace(*s))s++;
+    while (isspace(*s)) s++;
     if (*s == ':')
       {
       s++;
     if (*s == ':')
       {
       s++;
-      while (isspace(*s))s++;
+      while (isspace(*s)) s++;
       }
     if (*s != 0)
       {
       }
     if (*s != 0)
       {
@@ -420,11 +419,11 @@ while (Ufgets(line, max_insize, f) != NULL)
 if (started)
   {
   int rc;
 if (started)
   {
   int rc;
-  EXIM_DATUM_INIT(content);
-  EXIM_DATUM_DATA(content) = CS buffer;
-  EXIM_DATUM_SIZE(content) = bptr - buffer + add_zero;
+  exim_datum_init(&content);
+  exim_datum_data_set(&content, buffer);
+  exim_datum_size_set(&content, bptr - buffer + add_zero);
 
 
-  switch(rc = EXIM_DBPUTB(d, key, content))
+  switch(rc = exim_dbputb(d, &key, &content))
     {
     case EXIM_DBPUTB_OK:
     count++;
     {
     case EXIM_DBPUTB_OK:
     count++;
@@ -434,7 +433,7 @@ if (started)
     if (warn) fprintf(stderr, "** Duplicate key \"%s\"\n", keybuffer);
     dupcount++;
     if (duperr) yield = 1;
     if (warn) fprintf(stderr, "** Duplicate key \"%s\"\n", keybuffer);
     dupcount++;
     if (duperr) yield = 1;
-    if (lastdup) EXIM_DBPUT(d, key, content);
+    if (lastdup) exim_dbput(d, &key, &content);
     break;
 
     default:
     break;
 
     default:
@@ -449,7 +448,7 @@ if (started)
 
 TIDYUP:
 
 
 TIDYUP:
 
-EXIM_DBCLOSE(d);
+exim_dbclose(d);
 (void)fclose(f);
 
 /* If successful, output the number of entries and rename the temporary
 (void)fclose(f);
 
 /* If successful, output the number of entries and rename the temporary