#include #include #include #include #include #include #include #include #include #include // added for rpm query function #include // added for rpm query function #include // added for rpm query function int main(int argc, char **argv) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); exit(EXIT_FAILURE); } // recreate a set of command line args for rpmcli functions int count = 4; const char* arg0 = "blah"; const char* arg1 = "-q"; const char* arg2 = "--queryformat=\"%{SIGPGP:pgpsig}\""; char arg3[128] = ""; strcat(arg3, argv[1]); const char* args[count]; args[0] = arg0; args[1] = arg1; args[2] = arg2; args[3] = arg3; /* Set up a table of options. */ struct poptOption optionsTable[] = { { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0, "Query/Verify package selection options:", NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0, "Common options for all rpm modes and executables:", NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQueryPoptTable, 0, "Query options (with -q or --query):", NULL }, POPT_AUTOALIAS POPT_AUTOHELP POPT_TABLEEND }; poptContext context; QVA_t qva = &rpmQVKArgs; int ec; context = rpmcliInit(count, (char * const *)args, optionsTable); if (context == NULL) { poptPrintUsage(context, stderr, 0); exit(EXIT_FAILURE); } // We never do free as the program exits anyway! rpmts ts = rpmtsCreate(); /* Check for query mode. */ if (qva->qva_mode == 'q') { /* Make sure there's something to do. */ if (qva->qva_source != RPMQV_ALL && !poptPeekArg(context)) { fprintf(stderr, "no arguments given for --query"); exit(EXIT_FAILURE); } ec = rpmcliQuery(ts, qva, (char * const *) poptGetArgs(context)); } else { fprintf(stderr, "Unable to get sig key id for rpm: %s\n", argv[1]); } context = rpmcliFini(context); ///////////////////////////////////////////////////// //////////// end rpmcliquery code //////////////// ///////////////////////////////////////////////////// exit(0); }