]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keydb_db4.c
Make failure to load backend fatal.
[onak.git] / keydb_db4.c
index 1daf00bed8f91d016d55938848f2f92ce8101399..80397aacaadaa7465c1c4a9b682aaf598a071c78 100644 (file)
@@ -144,6 +144,8 @@ void initdb(bool readonly)
                                        "Error opening db environment: %s (%s)",
                                        config.db_dir,
                                        db_strerror(ret));
+                       dbenv->close(dbenv, 0);
+                       dbenv = NULL;
                }
        }
 
@@ -270,6 +272,8 @@ void cleanupdb(void)
                                dbconns[i] = NULL;
                        }
                }
+               free(dbconns);
+               dbconns = NULL;
                dbenv->close(dbenv, 0);
                dbenv = NULL;
        }
@@ -939,65 +943,6 @@ int delete_key(uint64_t keyid, bool intrans)
        return deadlock ? (-1) : (ret == DB_NOTFOUND);
 }
 
-/**
- *     dumpdb - dump the key database
- *     @filenamebase: The base filename to use for the dump.
- *
- *     Dumps the database into one or more files, which contain pure OpenPGP
- *     that can be reimported into onak or gpg. filenamebase provides a base
- *     file name for the dump; several files may be created, all of which will
- *     begin with this string and then have a unique number and a .pgp
- *     extension.
- */
-int dumpdb(char *filenamebase)
-{
-       DBT   key, data;
-       DBC  *cursor = NULL;
-       int   ret = 0;
-       int   fd = -1;
-       int   i = 0;
-       char  filename[1024];
-
-       filename[1023] = 0;
-       for (i = 0; i < numdbs; i++) {
-               ret = dbconns[i]->cursor(dbconns[i],
-                       NULL,
-                       &cursor,
-                       0);   /* flags */
-
-               snprintf(filename, 1023, "%s.%d.pgp", filenamebase, i);
-               fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0640);
-               if (fd == -1) {
-                       logthing(LOGTHING_ERROR,
-                               "Error opening keydump file (%s): %s",
-                               filename,
-                               strerror(errno));
-               } else {
-                       memset(&key, 0, sizeof(key));
-                       memset(&data, 0, sizeof(data));
-                       ret = cursor->c_get(cursor, &key, &data, DB_NEXT);
-                       while (ret == 0) {
-                               write(fd, data.data, data.size);
-                               memset(&key, 0, sizeof(key));
-                               memset(&data, 0, sizeof(data));
-                               ret = cursor->c_get(cursor, &key, &data,
-                                               DB_NEXT);
-                       }
-                       if (ret != DB_NOTFOUND) {
-                               logthing(LOGTHING_ERROR,
-                                       "Problem reading key: %s",
-                                       db_strerror(ret));
-                       }
-                       close(fd);
-               }
-
-               ret = cursor->c_close(cursor);
-               cursor = NULL;
-       }
-       
-       return 0;
-}
-
 /**
  *     iterate_keys - call a function once for each key in the db.
  *     @iterfunc: The function to call.