8 int version_check __P((void));
10 const char *progname = "rpmdb_checkversion"; /* Program name. */
13 * A very simple program to check for a Berkeley DB environment mismatch.
16 main(int argc, char *argv[])
20 const char *data_dir, *home;
25 if ((ret = version_check()) != 0)
26 return (EXIT_FAILURE);
29 * All of the shared database files live in home, but
30 * data files will live in data_dir.
33 home = "/var/lib/rpm";
34 data_dir = "/var/lib/rpm";
35 while ((ch = getopt(argc, argv, "h:d:qV")) != EOF)
47 printf("%s\n", db_version(NULL, NULL, NULL));
48 return (EXIT_SUCCESS);
51 (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
58 (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
63 * Create an environment object and initialize it for error
66 if ((ret = db_env_create(&dbenv, 0)) != 0) {
68 fprintf(stderr, "%s: %s\n", progname, db_strerror(ret));
72 dbenv->set_errfile(dbenv, NULL);
74 dbenv->set_errfile(dbenv, stderr);
76 dbenv->set_errpfx(dbenv, progname);
79 * We want to specify the shared memory buffer pool cachesize,
80 * but everything else is the default.
82 if ((ret = dbenv->set_cachesize(dbenv, 0, 64 * 1024, 0)) != 0) {
83 dbenv->err(dbenv, ret, "set_cachesize");
84 dbenv->close(dbenv, 0);
88 /* Databases are in a subdirectory. */
89 (void)dbenv->set_data_dir(dbenv, data_dir);
91 /* Open the environment with full transactional support. */
92 ret = dbenv->open(dbenv, home, DB_INIT_MPOOL, 0644);
93 /* Close the environment handle. */
94 dbenv->close(dbenv, 0);
96 if (ret == DB_VERSION_MISMATCH) {
109 int v_major, v_minor, v_patch;
111 /* Make sure we're loaded with the right version of the DB library. */
112 (void)db_version(&v_major, &v_minor, &v_patch);
113 if (v_major != DB_VERSION_MAJOR || v_minor != DB_VERSION_MINOR) {
115 "%s: version %d.%d doesn't match library version %d.%d\n",
116 progname, DB_VERSION_MAJOR,
117 DB_VERSION_MINOR, v_major, v_minor);
118 return (EXIT_FAILURE);