const char *name = NULL;
const char *lang = RPMBUILD_DEFAULT_LANG;
poptContext optCon = NULL;
- spectag t = NULL;
struct poptOption optionsTable[] = {
{ NULL, 'n', POPT_ARG_STRING, &name, 'n', NULL, NULL},
{ NULL, 'l', POPT_ARG_STRING, &lang, 'l', NULL, NULL},
}
#endif
- t = stashSt(spec, pkg->header, RPMTAG_DESCRIPTION, lang);
-
sb = newStringBuf();
if ((rc = readLine(spec, STRIP_TRAILINGSPACE | STRIP_COMMENTS)) > 0) {
} else {
while (! (nextPart = isPart(spec->line))) {
appendLineStringBuf(sb, spec->line);
- if (t) t->t_nlines++;
if ((rc =
readLine(spec, STRIP_TRAILINGSPACE | STRIP_COMMENTS)) > 0) {
nextPart = PART_NONE;
return rc;
}
-spectag stashSt(rpmSpec spec, Header h, rpmTagVal tag, const char * lang)
-{
- spectag t = NULL;
-
- if (spec->st) {
- spectags st = spec->st;
- if (st->st_ntags == st->st_nalloc) {
- st->st_nalloc += 10;
- st->st_t = xrealloc(st->st_t, st->st_nalloc * sizeof(*(st->st_t)));
- }
- t = st->st_t + st->st_ntags++;
- t->t_tag = tag;
- t->t_startx = spec->lineNum - 1;
- t->t_nlines = 1;
- t->t_lang = xstrdup(lang);
- t->t_msgid = NULL;
- if (!(t->t_lang && !rstreq(t->t_lang, RPMBUILD_DEFAULT_LANG))) {
- rasprintf(&t->t_msgid, "%s(%s)",
- headerGetString(h, RPMTAG_NAME), rpmTagGetName(tag));
- }
- }
- return t;
-}
-
#define SINGLE_TOKEN_ONLY \
if (multiToken) { \
rpmlog(RPMLOG_ERR, _("line %d: Tag takes single token only: %s\n"), \
break;
case RPMTAG_GROUP:
case RPMTAG_SUMMARY:
- (void) stashSt(spec, pkg->header, tag, lang);
case RPMTAG_DISTRIBUTION:
case RPMTAG_VENDOR:
case RPMTAG_LICENSE:
ofi->readPtr = ofi->readBuf;
ofi->lineNum++;
spec->lineNum = ofi->lineNum;
- if (spec->sl) {
- speclines sl = spec->sl;
- if (sl->sl_nlines == sl->sl_nalloc) {
- sl->sl_nalloc += 100;
- sl->sl_lines = (char **) xrealloc(sl->sl_lines,
- sl->sl_nalloc * sizeof(*(sl->sl_lines)));
- }
- sl->sl_lines[sl->sl_nlines++] = xstrdup(ofi->readBuf);
- }
}
return 0;
}
struct ReadLevelEntry * next;
} RLE_t;
-typedef struct spectag_s {
- int t_tag;
- int t_startx;
- int t_nlines;
- char * t_lang;
- char * t_msgid;
-} * spectag;
-
-struct spectags_s {
- spectag st_t;
- int st_nalloc;
- int st_ntags;
-};
-
-struct speclines_s {
- char **sl_lines;
- int sl_nalloc;
- int sl_nlines;
-};
-
/** \ingroup rpmbuild
*/
struct Source {
struct Source * next;
};
-typedef struct spectags_s * spectags;
-typedef struct speclines_s * speclines;
typedef struct Package_s * Package;
/** \ingroup rpmbuild
char * buildSubdir;
const char * rootDir;
- speclines sl;
- spectags st;
-
struct OpenFileInfo * fileStack;
char lbuf[10*BUFSIZ];
char *lbufPtr;
rpmRC rpmCharCheck(rpmSpec spec, char *field, size_t fsize, const char *whitelist);
/** \ingroup rpmbuild
- * stashSt.
- * @param spec spec file control structure
- * @param h header
- * @param tag tag
- * @param lang locale
- */
-RPM_GNUC_INTERNAL
-spectag stashSt(rpmSpec spec, Header h, rpmTagVal tag, const char * lang);
-
-/** \ingroup rpmbuild
* Parse dependency relations from spec file and/or autogenerated output buffer.
* @param spec spec file control structure
* @param pkg package control structure
return NULL;
}
-/**
- */
-static inline speclines freeSl(speclines sl)
-{
- int i;
- if (sl == NULL) return NULL;
- for (i = 0; i < sl->sl_nlines; i++)
- sl->sl_lines[i] = _free(sl->sl_lines[i]);
- sl->sl_lines = _free(sl->sl_lines);
- _free(sl);
- return NULL;
-}
-
-/**
- */
-static inline spectags freeSt(spectags st)
-{
- int i;
- if (st == NULL) return NULL;
- for (i = 0; i < st->st_ntags; i++) {
- spectag t = st->st_t + i;
- t->t_lang = _free(t->t_lang);
- t->t_msgid = _free(t->t_msgid);
- }
- st->st_t = _free(st->st_t);
- _free(st);
- return NULL;
-}
-
rpmSpec newSpec(void)
{
rpmSpec spec = xcalloc(1, sizeof(*spec));
spec->specFile = NULL;
- spec->sl = NULL;
- spec->st = NULL;
-
spec->fileStack = NULL;
spec->lbuf[0] = '\0';
spec->line = spec->lbuf;
if (spec == NULL) return NULL;
- spec->sl = freeSl(spec->sl);
- spec->st = freeSt(spec->st);
-
spec->prep = freeStringBuf(spec->prep);
spec->build = freeStringBuf(spec->build);
spec->install = freeStringBuf(spec->install);