diff --git a/build/parsePreamble.c b/build/parsePreamble.c index 6ae39ada6b..dabed7f5e4 100644 --- a/build/parsePreamble.c +++ b/build/parsePreamble.c @@ -186,17 +186,20 @@ static int addSource(rpmSpec spec, Package pkg, const char *field, rpmTagVal tag char *fieldp = NULL; char *buf = NULL; uint32_t num = 0; + int *autonum = NULL; switch (tag) { case RPMTAG_SOURCE: flag = RPMBUILD_ISSOURCE; name = "source"; fieldp = spec->line + 6; + autonum = &spec->autonum_source; break; case RPMTAG_PATCH: flag = RPMBUILD_ISPATCH; name = "patch"; fieldp = spec->line + 5; + autonum = &spec->autonum_patch; break; case RPMTAG_ICON: flag = RPMBUILD_ISICON; @@ -225,7 +228,8 @@ static int addSource(rpmSpec spec, Package pkg, const char *field, rpmTagVal tag nump = fieldp_backup; SKIPSPACE(nump); if (nump == NULL || *nump == '\0') { - num = flag == RPMBUILD_ISSOURCE ? 0 : INT_MAX; + (*autonum)++; + num = *autonum; } else { if (parseUnsignedNum(fieldp_backup, &num)) { rpmlog(RPMLOG_ERR, _("line %d: Bad %s number: %s\n"), @@ -233,6 +237,7 @@ static int addSource(rpmSpec spec, Package pkg, const char *field, rpmTagVal tag *fieldp = ch; return RPMRC_FAIL; } + *autonum = num; } *fieldp = ch; } diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h index 86a4f62748..86bddae291 100644 --- a/build/rpmbuild_internal.h +++ b/build/rpmbuild_internal.h @@ -81,6 +81,8 @@ struct rpmSpec_s { struct Source * sources; int numSources; int noSource; + int autonum_patch; + int autonum_source; char * sourceRpmName; unsigned char * sourcePkgId; diff --git a/build/spec.c b/build/spec.c index 7da8999004..e414e4102e 100644 --- a/build/spec.c +++ b/build/spec.c @@ -281,6 +281,8 @@ rpmSpec newSpec(void) spec->packages = NULL; spec->noSource = 0; spec->numSources = 0; + spec->autonum_patch = -1; + spec->autonum_source = -1; spec->sourceRpmName = NULL; spec->sourcePkgId = NULL;