+++ /dev/null
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <db.h>
-
-int version_check __P((void));
-
-const char *progname = "rpmdb_checkversion"; /* Program name. */
-
-/*
- * A very simple program to check for a Berkeley DB environment mismatch.
- */
-int
-main(int argc, char *argv[])
-{
- extern char *optarg;
- extern int optind;
- const char *data_dir, *home;
- int ch, quiet;
- DB_ENV *dbenv;
- int ret;
-
- if ((ret = version_check()) != 0)
- return (EXIT_FAILURE);
-
- /*
- * All of the shared database files live in home, but
- * data files will live in data_dir.
- */
- quiet = 0;
- home = "/var/lib/rpm";
- data_dir = "/var/lib/rpm";
- while ((ch = getopt(argc, argv, "h:d:qV")) != EOF)
- switch (ch) {
- case 'h':
- home = optarg;
- break;
- case 'd':
- data_dir = optarg;
- break;
- case 'q':
- quiet = 1;
- break;
- case 'V':
- printf("%s\n", db_version(NULL, NULL, NULL));
- return (EXIT_SUCCESS);
- case '?':
- default:
- (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
- return (1);
- }
- argc -= optind;
- argv += optind;
-
- if (argc != 0) {
- (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
- return (1);
- }
-
- /*
- * Create an environment object and initialize it for error
- * reporting.
- */
- if ((ret = db_env_create(&dbenv, 0)) != 0) {
- if (!quiet)
- fprintf(stderr, "%s: %s\n", progname, db_strerror(ret));
- return (1);
- }
- if (quiet) {
- dbenv->set_errfile(dbenv, NULL);
- } else {
- dbenv->set_errfile(dbenv, stderr);
- }
- dbenv->set_errpfx(dbenv, progname);
-
- /*
- * We want to specify the shared memory buffer pool cachesize,
- * but everything else is the default.
- */
- if ((ret = dbenv->set_cachesize(dbenv, 0, 64 * 1024, 0)) != 0) {
- dbenv->err(dbenv, ret, "set_cachesize");
- dbenv->close(dbenv, 0);
- return (1);
- }
-
- /* Databases are in a subdirectory. */
- (void)dbenv->set_data_dir(dbenv, data_dir);
-
- /* Open the environment with full transactional support. */
- ret = dbenv->open(dbenv, home, DB_INIT_MPOOL, 0644);
- /* Close the environment handle. */
- dbenv->close(dbenv, 0);
-#if 0
- if (ret == DB_VERSION_MISMATCH) {
-#else
- if (ret != 0) {
-#endif
- return (1);
- }
-
- return (0);
-}
-
-int
-version_check()
-{
- int v_major, v_minor, v_patch;
-
- /* Make sure we're loaded with the right version of the DB library. */
- (void)db_version(&v_major, &v_minor, &v_patch);
- if (v_major != DB_VERSION_MAJOR || v_minor != DB_VERSION_MINOR) {
- fprintf(stderr,
- "%s: version %d.%d doesn't match library version %d.%d\n",
- progname, DB_VERSION_MAJOR,
- DB_VERSION_MINOR, v_major, v_minor);
- return (EXIT_FAILURE);
- }
- return (0);
-}