X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=rpmdb_checkversion.c;h=58a169c4483b53f28d60a422da9a128ff86a537f;hp=7666fff9da02cd27ef22f0914675149e45157191;hb=75024bb9aa48b2714bb0ca6cd1aee4d2c69c813b;hpb=ce677e4163ed24589fbe1a9b98acdd83a52ddddd diff --git a/rpmdb_checkversion.c b/rpmdb_checkversion.c index 7666fff..58a169c 100644 --- a/rpmdb_checkversion.c +++ b/rpmdb_checkversion.c @@ -5,6 +5,8 @@ #include #include +int version_check __P((void)); + const char *progname = "rpmdb_checkversion"; /* Program name. */ /* @@ -20,6 +22,9 @@ main(int argc, char *argv[]) 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. @@ -27,7 +32,7 @@ main(int argc, char *argv[]) quiet = 0; home = "/var/lib/rpm"; data_dir = "/var/lib/rpm"; - while ((ch = getopt(argc, argv, "h:d:q")) != EOF) + while ((ch = getopt(argc, argv, "h:d:qV")) != EOF) switch (ch) { case 'h': home = optarg; @@ -38,6 +43,9 @@ main(int argc, char *argv[]) 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); @@ -94,3 +102,20 @@ main(int argc, char *argv[]) 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); +}