4 #include <rpm/rpmcli.h>
8 #if !defined(__GLIBC__) && !defined(__APPLE__)
9 char ** environ = NULL;
13 MODE_INITDB = (1 << 0),
14 MODE_REBUILDDB = (1 << 1),
15 MODE_VERIFYDB = (1 << 2),
20 static struct poptOption dbOptsTable[] = {
21 { "initdb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR), &mode, MODE_INITDB,
22 N_("initialize database"), NULL},
23 { "rebuilddb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR), &mode, MODE_REBUILDDB,
24 N_("rebuild database inverted lists from installed package headers"),
26 { "verifydb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
27 &mode, MODE_VERIFYDB, N_("verify database files"), NULL},
31 static struct poptOption optionsTable[] = {
32 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, dbOptsTable, 0,
33 N_("Database options:"), NULL },
34 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0,
35 N_("Common options for all rpm modes and executables:"), NULL },
42 int main(int argc, char *argv[])
44 int ec = EXIT_FAILURE;
45 poptContext optCon = rpmcliInit(argc, argv, optionsTable);
48 if (argc < 2 || poptPeekArg(optCon)) {
49 printUsage(optCon, stderr, 0);
54 rpmtsSetRootDir(ts, rpmcliRootDir);
58 ec = rpmtsInitDB(ts, 0644);
61 { rpmVSFlags vsflags = rpmExpandNumeric("%{_vsflags_rebuilddb}");
62 rpmVSFlags ovsflags = rpmtsSetVSFlags(ts, vsflags);
63 ec = rpmtsRebuildDB(ts);
64 rpmtsSetVSFlags(ts, ovsflags);
67 ec = rpmtsVerifyDB(ts);
70 argerror(_("only one major mode may be specified"));