10 #define _RPMDS_INTERNAL 11 #define _RPMEVR_INTERNAL 17 #define progname __progname 21 EVR_t a = memset(
alloca(
sizeof(*a)), 0,
sizeof(*a));
22 EVR_t b = memset(
alloca(
sizeof(*b)), 0,
sizeof(*b));
30 rc = !(av[1][0] ==
'l');
32 rc = !(av[1][0] ==
'g');
34 rc = !(av[1][0] ==
'e' || av[1][1] ==
'e');
36 a->str =
_free(a->str);
37 b->str =
_free(b->str);
42 {
"debug",
'd', POPT_ARG_VAL, &
_rpmevr_debug, -1, NULL, NULL },
49 main(
int argc,
char *argv[])
59 if ((
progname = strrchr(argv[0],
'/')) != NULL)
64 optCon = poptGetContext(argv[0], argc, (
const char **)argv,
optionsTable, 0);
65 while ((rc = poptGetNextOpt(optCon)) > 0)
68 av = poptGetArgs(optCon);
71 if (ac == 0 || !strcmp(*av,
"-")) {
78 while ((arg = *av++) != NULL) {
81 if (poptParseArgvString(arg, &rac, &rav) || rac != 3) {
82 fprintf(stderr,
_(
"skipping malformed comparison: \"%s\"\n"), arg);
91 optCon = poptFreeContext(optCon);
int main(int argc, char *argv[])
int rpmEVRparse(const char *evrstr, EVR_t evr)
Split EVR string into epoch, version, and release components.
static struct poptOption optionsTable[]
int rpmEVRcompare(const EVR_t a, const EVR_t b)
Compare EVR containers for equality.
int argvCount(const ARGV_t argv)
Return no.
Structure(s) used for dependency tag sets.
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
int argvFgets(ARGV_t *argvp, void *_fd)
Read lines into an argv array.
static int pointRpmEVR(ARGV_t av)