# build/parsePreamble.c File Reference

Parse tags in global section from spec file. More...

`#include "system.h"`
`#include <rpmio_internal.h>`
`#include <rpmbuild.h>`
`#include "debug.h"`

Go to the source code of this file.

## Data Structures

struct | tokenBits_s
struct | optionalTag
struct | PreambleRec_s

## Defines

#define | SINGLE_TOKEN_ONLY

## Typedefs

typedef tokenBits_s * | tokenBits
typedef PreambleRec_s * | PreambleRec

## Functions

void | addOrAppendListEntry (Header h, int_32 tag, char *line)
int | parseSimplePart (char *line, char **name, int *flag)
int | parseYesNo (const char *s)
int | parseBits (const char *s, const tokenBits tokbits, rpmsenseFlags *bp)
char * | findLastChar (char *s)
int | isMemberInEntry (Header h, const char *name, rpmTag tag)
int | checkForValidArchitectures (Spec spec)
int | checkForRequired (Header h, const char *NVR)
| Check that required tags are present in header.
int | checkForDuplicates (Header h, const char *NVR)
| Check that no duplicate tags are present in header.
void | fillOutMainPackage (Header h)
int | readIcon (Header h, const char *file)
spectag | stashSt (Spec spec, Header h, int tag, const char *lang)
int | handlePreambleTag (Spec spec, Package pkg, int tag, const char *macro, const char *lang)
void | initPreambleList (void)
int | findPreambleTag (Spec spec, int *tag, const char **macro, char *lang)
int | parsePreamble (Spec spec, int initialPackage)

## Variables

rpmTag | copyTagsDuringParse []
rpmTag | requiredTags []
tokenBits_s | installScriptBits []
tokenBits_s | buildScriptBits []
optionalTag | optionalTags []
int | noLang
PreambleRec_s | preambleList []

## Detailed Description

Parse tags in global section from spec file.

Definition in file parsePreamble.c.

## Define Documentation

#define SINGLE_TOKEN_ONLY

Value:

    if (multiToken) { \
        rpmError(RPMERR_BADSPEC, _("line %d: Tag takes single token only: %s\n"), \
                 spec->lineNum, spec->line); \
        return RPMERR_BADSPEC; \
    }

Definition at line 432 of file parsePreamble.c.

Referenced by handlePreambleTag().

## Typedef Documentation

typedef struct PreambleRec_s * PreambleRec

| Referenced by findPreambleTag(), and initPreambleList().

typedef struct tokenBits_s * tokenBits

| Referenced by parseBits().

## Function Documentation

void addOrAppendListEntry | ( | Header | h,
|  | int_32 | tag,
|  | char * | line
| ) | `[static]`

| Definition at line 51 of file parsePreamble.c. References _free(), Header, headerAddOrAppendEntry(), int_32, poptParseArgvString(), and RPM_STRING_ARRAY_TYPE. Referenced by handlePreambleTag().

int checkForDuplicates | ( | Header | h,
|  | const char * | NVR
| ) | `[static]`

Check that no duplicate tags are present in header.

Parameters:

  h | header
  NVR | package name-version-release

Returns:
  0 if OK

Definition at line 286 of file parsePreamble.c.

References _, Header, headerFreeIterator(), headerInitIterator(), HeaderIterator, headerNextIterator(), RPMERR_BADSPEC, rpmError, and tagName().

Referenced by parsePreamble().

int checkForRequired | ( | Header | h,
|  | const char * | NVR
| ) | `[static]`

Check that required tags are present in header.

Parameters:

  h | header
  NVR | package name-version-release

Returns:
  0 if OK

Definition at line 262 of file parsePreamble.c.

References _, Header, headerIsEntry(), requiredTags, RPMERR_BADSPEC, rpmError, rpmTag, and tagName().

Referenced by parsePreamble().

int checkForValidArchitectures | ( | Spec | spec | ) | `[static]`

| Definition at line 218 of file parsePreamble.c. References _, SpecStruct::buildRestrictions, isMemberInEntry(), RPMERR_BADSPEC, rpmError, rpmExpand(), rpmGetArchInfo(), rpmGetOsInfo(), RPMTAG_EXCLUDEARCH, RPMTAG_EXCLUDEOS, RPMTAG_EXCLUSIVEARCH, RPMTAG_EXCLUSIVEOS, and Spec. Referenced by parsePreamble().

void fillOutMainPackage | ( | Header | h | ) | `[static]`

| Definition at line 324 of file parsePreamble.c. References _free(), Header, headerAddEntry(), headerIsEntry(), optionalTags, optionalTag::ot_mac, RPM_STRING_TYPE, and rpmExpand(). Referenced by parsePreamble().

char* findLastChar | ( | char * | s | ) | `[inline, static]`

| Definition at line 179 of file parsePreamble.c. References xisspace(). Referenced by handlePreambleTag().

int findPreambleTag | ( | Spec | spec,
|  | int * | tag,
|  | const char ** | macro,
|  | char * | lang
| ) | `[static]`

| Definition at line 779 of file parsePreamble.c. References initPreambleList(), PreambleRec_s::len, SpecStruct::line, PreambleRec_s::multiLang, preambleList, PreambleRec, RPMBUILD_DEFAULT_LANG, RPMTAG_PATCH, RPMTAG_SOURCE, SKIPSPACE, Spec, PreambleRec_s::tag, PreambleRec_s::token, xisspace(), and xstrncasecmp(). Referenced by parsePreamble().

int handlePreambleTag | ( | Spec | spec,
|  | Package | pkg,
|  | int | tag,
|  | const char * | macro,
|  | const char * | lang
| ) | `[static]`

Definition at line 445 of file parsePreamble.c.

References _, _free(), addMacro(), addOrAppendListEntry(), addSource(), PackageStruct::autoProv, PackageStruct::autoReq, SpecStruct::BACount, SpecStruct::BANames, SpecStruct::buildRestrictions, SpecStruct::buildRootURL, buildScriptBits, delMacro(), findLastChar(), SpecStruct::gotBuildRootURL, PackageStruct::header, headerAddEntry(), headerAddI18NString(), HFD_t, HGE_t, installScriptBits, SpecStruct::line, SpecStruct::lineNum, SpecStruct::macros, noLang, SpecStruct::noSource, Package, parseBits(), parseNoSource(), parseNum(), parseRCPOT(), parseYesNo(), poptParseArgvString(), readIcon(), RMIL_OLDSPEC, RMIL_SPEC, SpecStruct::rootURL, RPM_INT32_TYPE, RPM_STRING_TYPE, RPMBUILD_DEFAULT_LANG, RPMERR_BADSPEC, RPMERR_INTERNAL, rpmError, rpmGenPath(), RPMSENSE_ANY, rpmsenseFlags, RPMTAG_AUTOPROV, RPMTAG_AUTOREQ, RPMTAG_AUTOREQPROV, RPMTAG_BUILDARCHS, RPMTAG_BUILDCONFLICTS, RPMTAG_BUILDPREREQ, RPMTAG_BUILDREQUIRES, RPMTAG_BUILDROOT, RPMTAG_CONFLICTFLAGS, RPMTAG_DISTRIBUTION, RPMTAG_DOCDIR, RPMTAG_EPOCH, RPMTAG_EXCLUDEARCH, RPMTAG_EXCLUDEOS, RPMTAG_EXCLUSIVEARCH, RPMTAG_EXCLUSIVEOS, RPMTAG_GROUP, RPMTAG_ICON, RPMTAG_LICENSE, RPMTAG_NAME, RPMTAG_NOPATCH, RPMTAG_NOSOURCE, RPMTAG_OBSOLETEFLAGS, RPMTAG_PACKAGER, RPMTAG_PATCH, RPMTAG_PREFIXES, RPMTAG_PREREQ, RPMTAG_PROVIDEFLAGS, RPMTAG_RELEASE, RPMTAG_REQUIREFLAGS, RPMTAG_RHNPLATFORM, RPMTAG_SOURCE, RPMTAG_SUMMARY, RPMTAG_URL, RPMTAG_VENDOR, RPMTAG_VERSION, rpmTagType, SINGLE_TOKEN_ONLY, SKIPNONSPACE, SKIPSPACE, Spec, stashSt(), tagName(), and urlPath().

Referenced by parsePreamble().

void initPreambleList | ( | void |  | ) | `[inline, static]`

| Definition at line 768 of file parsePreamble.c. References PreambleRec_s::len, preambleList, PreambleRec, and PreambleRec_s::token. Referenced by findPreambleTag().

int isMemberInEntry | ( | Header | h,
|  | const char * | name,
|  | rpmTag | tag
| ) | `[static]`

| Definition at line 197 of file parsePreamble.c. References Header, HFD_t, HGE_t, rpmTag, rpmTagType, and xstrcasecmp(). Referenced by checkForValidArchitectures().

int parseBits | ( | const char * | s,
|  | const tokenBits | tokbits,
|  | rpmsenseFlags * | bp
| ) | `[static]`

| Definition at line 143 of file parsePreamble.c. References tokenBits_s::bits, tokenBits_s::name, RPMERR_BADSPEC, RPMSENSE_ANY, rpmsenseFlags, tokenBits, xisalpha(), and xisspace(). Referenced by handlePreambleTag().

int parseSimplePart | ( | char * | line,
|  | char ** | name,
|  | int * | flag
| ) | `[static]`

| Definition at line 69 of file parsePreamble.c. References PART_NAME, and PART_SUBNAME. Referenced by parsePreamble().

int parseYesNo | ( | const char * | s | ) | `[inline, static]`

| Definition at line 102 of file parsePreamble.c. References xstrcasecmp(). Referenced by handlePreambleTag().

int readIcon | ( | Header | h,
|  | const char * | file
| ) | `[static]`

| Definition at line 342 of file parsePreamble.c. References _, _free(), Fclose(), FD_t, fdSize(), Ferror(), Fopen(), Fread(), Fstrerror(), Header, headerAddEntry(), RPM_BIN_TYPE, RPMERR_BADSPEC, rpmError, rpmGetPath(), RPMTAG_GIF, RPMTAG_XPM, and xmalloc(). Referenced by handlePreambleTag().

## Variable Documentation

struct tokenBits_s buildScriptBits[]`[static]`

Initial value:

     {
        { "prep",           RPMSENSE_SCRIPT_PREP },
        { "build",          RPMSENSE_SCRIPT_BUILD },
        { "install",        RPMSENSE_SCRIPT_INSTALL },
        { "clean",          RPMSENSE_SCRIPT_CLEAN },
        { NULL, 0 }
    }

Definition at line 133 of file parsePreamble.c.

Referenced by handlePreambleTag().

rpmTag copyTagsDuringParse[]`[static]`

Initial value:

     {
        RPMTAG_EPOCH,
        RPMTAG_VERSION,
        RPMTAG_RELEASE,
        RPMTAG_LICENSE,
        RPMTAG_PACKAGER,
        RPMTAG_DISTRIBUTION,
        RPMTAG_DISTURL,
        RPMTAG_VENDOR,
        RPMTAG_ICON,
        RPMTAG_URL,
        RPMTAG_CHANGELOGTIME,
        RPMTAG_CHANGELOGNAME,
        RPMTAG_CHANGELOGTEXT,
        RPMTAG_PREFIXES,
        RPMTAG_RHNPLATFORM,
        0
    }

Definition at line 17 of file parsePreamble.c.

Referenced by parsePreamble().

struct tokenBits_s installScriptBits[]`[static]`

Initial value:

     {
        { "interp",         RPMSENSE_INTERP },
        { "prereq",         RPMSENSE_PREREQ },
        { "preun",          RPMSENSE_SCRIPT_PREUN },
        { "pre",            RPMSENSE_SCRIPT_PRE },
        { "postun",         RPMSENSE_SCRIPT_POSTUN },
        { "post",           RPMSENSE_SCRIPT_POST },
        { "rpmlib",         RPMSENSE_RPMLIB },
        { "verify",         RPMSENSE_SCRIPT_VERIFY },
        { NULL, 0 }
    }

Definition at line 118 of file parsePreamble.c.

Referenced by handlePreambleTag().

int noLang

| Definition at line 440 of file parsePreamble.c.

struct optionalTag optionalTags[]`[static]`

| Referenced by fillOutMainPackage().

struct PreambleRec_s preambleList[]`[static]`

| Definition at line 719 of file parsePreamble.c. Referenced by findPreambleTag(), and initPreambleList().

rpmTag requiredTags[]`[static]`

Initial value:

     {
        RPMTAG_NAME,
        RPMTAG_VERSION,
        RPMTAG_RELEASE,
        RPMTAG_SUMMARY,
        RPMTAG_GROUP,
        RPMTAG_LICENSE,
        0
    }

Definition at line 39 of file parsePreamble.c.

Referenced by checkForRequired().