Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

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_stokenBits
typedef PreambleRec_sPreambleRec

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 447 of file parsePreamble.c.


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(), argv, Header, headerAddOrAppendEntry(), 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 297 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 271 of file parsePreamble.c.

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

Referenced by parsePreamble().

int checkForValidArchitectures Spec  spec  )  [static]
 

Definition at line 227 of file parsePreamble.c.

References _, Spec_s::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 336 of file parsePreamble.c.

References _free(), Header, headerAddEntry(), headerIsEntry(), optionalTag::ot_mac, optionalTag::ot_tag, RPM_STRING_TYPE, and rpmExpand().

Referenced by parsePreamble().

char* findLastChar char *  s  )  [inline, static]
 

Definition at line 184 of file parsePreamble.c.

References xisspace().

Referenced by handlePreambleTag().

int findPreambleTag Spec  spec,
int *  tag,
const char **  macro,
char *  lang
[static]
 

Definition at line 797 of file parsePreamble.c.

References initPreambleList(), PreambleRec_s::len, Spec_s::line, PreambleRec_s::multiLang, preambleList, PreambleRec, RPMBUILD_DEFAULT_LANG, 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 461 of file parsePreamble.c.

References _, _free(), addMacro(), addOrAppendListEntry(), addSource(), Package_s::autoProv, Package_s::autoReq, Spec_s::BACount, Spec_s::BANames, Spec_s::buildRestrictions, Spec_s::buildRootURL, buildScriptBits, delMacro(), findLastChar(), Spec_s::gotBuildRootURL, Package_s::header, headerAddEntry(), headerAddI18NString(), HFD_t, HGE_t, installScriptBits, Spec_s::line, Spec_s::lineNum, Spec_s::macros, noLang, Spec_s::noSource, Package, parseBits(), parseNoSource(), parseNum(), parseRCPOT(), parseYesNo(), poptParseArgvString(), readIcon(), RMIL_OLDSPEC, RMIL_SPEC, Spec_s::rootURL, RPM_INT32_TYPE, RPM_STRING_TYPE, RPMBUILD_DEFAULT_LANG, RPMERR_BADSPEC, RPMERR_INTERNAL, rpmError, rpmGenPath(), 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, SKIPNONSPACE, SKIPSPACE, Spec, stashSt(), tagName(), and urlPath().

Referenced by parsePreamble().

void initPreambleList void   )  [inline, static]
 

Definition at line 785 of file parsePreamble.c.

References PreambleRec_s::len, PreambleRec, and PreambleRec_s::token.

Referenced by findPreambleTag().

int isMemberInEntry Header  h,
const char *  name,
rpmTag  tag
[static]
 

Definition at line 204 of file parsePreamble.c.

References Header, HFD_t, HGE_t, rpmTagType, and xstrcasecmp().

Referenced by checkForValidArchitectures().

int parseBits const char *  s,
const tokenBits  tokbits,
rpmsenseFlags bp
[static]
 

Definition at line 147 of file parsePreamble.c.

References tokenBits_s::bits, tokenBits_s::name, RPMERR_BADSPEC, rpmsenseFlags, tokenBits, xisalpha(), and xisspace().

Referenced by handlePreambleTag().

int parseSimplePart char *  line,
char **  name,
int *  flag
[static]
 

Definition at line 70 of file parsePreamble.c.

Referenced by parsePreamble().

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

Definition at line 104 of file parsePreamble.c.

References xstrcasecmp().

Referenced by handlePreambleTag().

int readIcon Header  h,
const char *  file
[static]
 

Definition at line 357 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 136 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 121 of file parsePreamble.c.

Referenced by handlePreambleTag().

int noLang
 

Definition at line 53 of file poptBT.c.

struct optionalTag optionalTags[] [static]
 

struct PreambleRec_s preambleList[] [static]
 

Definition at line 736 of file parsePreamble.c.

Referenced by findPreambleTag().

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.


Generated on Sat Nov 17 07:13:40 2007 for rpm by  doxygen 1.3.9.1