summaryrefslogtreecommitdiff
path: root/rpmdb.c
diff options
context:
space:
mode:
authorMichael Schroeder <mls@suse.de>2020-02-03 14:20:19 +0100
committerPanu Matilainen <pmatilai@redhat.com>2020-02-26 12:50:22 +0200
commit243041f5fb68b68102243d713a1c5a3dc52698a2 (patch)
tree4a28844fdfa95f92b1751f4c52b1eea26a2d6150 /rpmdb.c
parent6489957449fec63ddf330330e9435b4ee0c388b0 (diff)
downloadrpm-243041f5fb68b68102243d713a1c5a3dc52698a2.tar.gz
Add a --salvagedb option to the rpmdb tool
Diffstat (limited to 'rpmdb.c')
-rw-r--r--rpmdb.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/rpmdb.c b/rpmdb.c
index 25c088da9..b72f0a598 100644
--- a/rpmdb.c
+++ b/rpmdb.c
@@ -12,6 +12,7 @@ enum modes {
MODE_VERIFYDB = (1 << 2),
MODE_EXPORTDB = (1 << 3),
MODE_IMPORTDB = (1 << 4),
+ MODE_SALVAGEDB = (1 << 5),
};
static int mode = 0;
@@ -24,6 +25,8 @@ static struct poptOption dbOptsTable[] = {
NULL},
{ "verifydb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
&mode, MODE_VERIFYDB, N_("verify database files"), NULL},
+ { "salvagedb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
+ &mode, MODE_SALVAGEDB, N_("salvage database"), NULL},
{ "exportdb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR), &mode, MODE_EXPORTDB,
N_("export database to stdout header list"),
NULL},
@@ -108,8 +111,11 @@ int main(int argc, char *argv[])
ec = rpmtsInitDB(ts, 0644);
break;
case MODE_REBUILDDB:
+ case MODE_SALVAGEDB:
{ rpmVSFlags vsflags = rpmExpandNumeric("%{_vsflags_rebuilddb}");
rpmVSFlags ovsflags = rpmtsSetVSFlags(ts, vsflags);
+ if (mode == MODE_SALVAGEDB)
+ rpmDefineMacro(NULL, "_rebuilddb_salvage 1", 0);
ec = rpmtsRebuildDB(ts);
rpmtsSetVSFlags(ts, ovsflags);
} break;