8 #define _RPMEVR_INTERNAL
12 #define SKIPWHITE(_x) {while(*(_x) && (xisspace(*_x) || *(_x) == ',')) (_x)++;}
13 #define SKIPNONWHITE(_x){while(*(_x) &&!(xisspace(*_x) || *(_x) == ',')) (_x)++;}
18 const char *r, *re, *v, *ve;
25 tagflags |= RPMSENSE_PROVIDES;
29 tagflags |= RPMSENSE_OBSOLETES;
33 tagflags |= RPMSENSE_CONFLICTS;
37 tagflags |= RPMSENSE_CONFLICTS;
45 tagflags |= RPMSENSE_TRIGGERPREIN;
49 tagflags |= RPMSENSE_TRIGGERIN;
53 tagflags |= RPMSENSE_TRIGGERPOSTUN;
57 tagflags |= RPMSENSE_TRIGGERUN;
62 tagflags |= RPMSENSE_MISSINGOK;
71 tagflags |= RPMSENSE_PROVIDES;
75 tagflags |= RPMSENSE_OBSOLETES;
86 for (r = field; *r !=
'\0'; r = re) {
96 if (!(
xisalnum(r[0]) || r[0] ==
'_' || r[0] ==
'/'
97 || (nr > 2 && r[0] ==
'!')
98 || (nr > 3 && r[0] ==
'%' && r[1] ==
'{' && r[nr-1] ==
'}')))
101 _(
"line %d: Dependency \"%s\" must begin with alpha-numeric, '_' or '/': %s\n"),
109 strncpy(N, r, (re-r));
123 if (F && r[0] ==
'/') {
125 _(
"line %d: Versioned file name not permitted: %s\n"),
142 if (*v ==
'\0' || ve == v) {
148 strncpy(EVR, v, (ve-v));
155 (void)
addReqProv(spec, h, tagN, N, EVR, Flags, index);