rpm  5.4.15
Data Structures | Macros | Functions | Variables
parseSpec.c File Reference

Top level dispatcher for spec file parsing. More...

#include "system.h"
#include <rpmio_internal.h>
#include <rpmcb.h>
#include <argv.h>
#include <rpmbuild.h>
#include "rpmds.h"
#include "rpmts.h"
#include "debug.h"
Include dependency graph for parseSpec.c:

Go to the source code of this file.

Data Structures

struct  PartRec
 

Macros

#define _RPMTAG_INTERNAL   /* XXX rpmTags->aTags */
 

Functions

static void initParts (struct PartRec *p)
 
rpmParseState isPart (Spec spec)
 Check line for section separator, return next parser state. More...
 
static int matchTok (const char *token, const char *line)
 
void handleComments (char *s)
 Truncate comment lines. More...
 
static void forceIncludeFile (Spec spec, const char *fileName)
 
static int restoreFirstChar (Spec spec)
 
static int copyNextLineFromOFI (Spec spec, OFI_t *ofi, rpmStripFlags strip)
 
static int copyNextLineFinish (Spec spec, int strip)
 
static int readLineFromOFI (Spec spec, OFI_t *ofi)
 
int readLine (Spec spec, rpmStripFlags strip)
 Read next line from spec file. More...
 
void closeSpec (Spec spec)
 Stop reading from spec file, freeing resources. More...
 
static int genSourceRpmName (Spec spec)
 
int parseSpec (rpmts ts, const char *specFile, const char *rootURL, int recursing, const char *passPhrase, const char *cookie, int anyarch, int force, int verify)
 Parse spec file into spec control structure. More...
 

Variables

static struct PartRec partList []
 
int noLang
 

Detailed Description

Top level dispatcher for spec file parsing.

Definition in file parseSpec.c.

Macro Definition Documentation

#define _RPMTAG_INTERNAL   /* XXX rpmTags->aTags */

Definition at line 12 of file parseSpec.c.

Function Documentation

void closeSpec ( Spec  spec)

Stop reading from spec file, freeing resources.

Parameters
specspec file control structure

Definition at line 487 of file parseSpec.c.

References _free(), Fclose(), OpenFileInfo::fd, OpenFileInfo::fileName, Spec_s::fileStack, and OpenFileInfo::next.

Referenced by parseSpec(), and specFini().

static int copyNextLineFinish ( Spec  spec,
int  strip 
)
static
static int copyNextLineFromOFI ( Spec  spec,
OFI_t ofi,
rpmStripFlags  strip 
)
static
static void forceIncludeFile ( Spec  spec,
const char *  fileName 
)
static

Definition at line 151 of file parseSpec.c.

References OpenFileInfo::fileName, Spec_s::fileStack, newOpenFileInfo(), OpenFileInfo::next, and xstrdup().

Referenced by readLine().

static int genSourceRpmName ( Spec  spec)
inlinestatic
void handleComments ( char *  s)

Truncate comment lines.

Parameters
sskip white space, truncate line at '#'

Definition at line 142 of file parseSpec.c.

References SKIPSPACE.

Referenced by copyNextLineFinish(), and processPackageFiles().

static void initParts ( struct PartRec p)
inlinestatic

Definition at line 57 of file parseSpec.c.

References PartRec::len, and PartRec::token.

Referenced by isPart().

rpmParseState isPart ( Spec  spec)

Check line for section separator, return next parser state.

Parameters
specspec file control structure
Returns
next parser state

Definition at line 64 of file parseSpec.c.

References _free(), argvSearch(), argvStrcasecmp(), Spec_s::foo, initParts(), PartRec::len, len, Spec_s::line, Spec_s::nfoo, PartRec::part, PART_ARBITRARY, PART_NONE, partList, rpmTags, tagCanonicalize(), tagGenerate(), tagName(), PartRec::token, xisspace(), xrealloc, xstrdup(), and xstrncasecmp().

Referenced by parseBuildInstallClean(), parseChangelog(), parseDescription(), parseFiles(), parsePreamble(), parsePrep(), and parseScript().

static int matchTok ( const char *  token,
const char *  line 
)
static

Definition at line 120 of file parseSpec.c.

References b, SKIPNONSPACE, SKIPSPACE, and xstrncasecmp().

Referenced by readLine().

int parseSpec ( rpmts  ts,
const char *  specFile,
const char *  rootURL,
int  recursing,
const char *  passPhrase,
const char *  cookie,
int  anyarch,
int  force,
int  verify 
)

Parse spec file into spec control structure.

Parameters
tstransaction set (spec file control in ts->spec)
specFile
rootURL
recursingparse is recursive?
passPhrase
cookie
anyarch
force
verify
Returns

Definition at line 530 of file parseSpec.c.

References _, _free(), addMacro(), alloca(), Spec_s::anyarch, Spec_s::BACount, Spec_s::BANames, Spec_s::BASpecs, _HE_s::c, closeSpec(), Spec_s::cookie, delMacro(), Package_s::ds, OpenFileInfo::fileName, Spec_s::fileStack, Spec_s::force, freeSpec(), genSourceRpmName(), Package_s::header, headerGet(), headerIsEntry(), headerPut(), Spec_s::macros, newOpenFileInfo(), newSpec(), Package_s::next, Package_s::noarch, _HE_s::p, Spec_s::packages, parseBuildInstallClean(), parseChangelog(), parseDescription(), parseFiles(), parsePreamble(), parsePrep(), parseScript(), parseSpec(), PART_ARBITRARY, PART_BUILD, PART_BUILDARCHITECTURES, PART_CHANGELOG, PART_CHECK, PART_CLEAN, PART_DESCRIPTION, PART_FILES, PART_INSTALL, PART_LAST, PART_NONE, PART_POST, PART_POSTTRANS, PART_POSTUN, PART_PRE, PART_PREAMBLE, PART_PREP, PART_PRETRANS, PART_PREUN, PART_SANITYCHECK, PART_TRIGGERIN, PART_TRIGGERPOSTUN, PART_TRIGGERPREIN, PART_TRIGGERUN, PART_VERIFYSCRIPT, Spec_s::passPhrase, platform, rpmDataType_u::ptr, Spec_s::recursing, RMIL_RPMRC, RMIL_SPEC, Spec_s::rootURL, RPM_STRING_TYPE, rpmdsThis(), rpmExpand(), rpmExpandNumeric(), rpmGetPath(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMSENSE_EQUAL, RPMTAG_ARCH, RPMTAG_DESCRIPTION, RPMTAG_NVRA, RPMTAG_OS, RPMTAG_PLATFORM, RPMTAG_REQUIRENAME, RPMTAG_SOURCERPM, rpmtsSetSpec(), Spec_s::sourceRpmName, Spec_s::specFile, rpmDataType_u::str, _HE_s::t, _HE_s::tag, Spec_s::timeCheck, Spec_s::toplevel, xcalloc(), and xstrdup().

Referenced by _specQuery(), parseSpec(), rpmts_parse_spec(), and spec_Parse().

int readLine ( Spec  spec,
rpmStripFlags  strip 
)
static int readLineFromOFI ( Spec  spec,
OFI_t ofi 
)
static
static int restoreFirstChar ( Spec  spec)
static

Definition at line 164 of file parseSpec.c.

References Spec_s::nextline, and Spec_s::nextpeekc.

Referenced by readLine().

Variable Documentation

int noLang

Definition at line 57 of file poptBT.c.

struct PartRec partList[]
static
Initial value:
= {
{ PART_PREAMBLE, 0, "%package"},
{ PART_PREP, 0, "%prep"},
{ PART_BUILD, 0, "%build"},
{ PART_INSTALL, 0, "%install"},
{ PART_CHECK, 0, "%check"},
{ PART_CLEAN, 0, "%clean"},
{ PART_PREUN, 0, "%preun"},
{ PART_POSTUN, 0, "%postun"},
{ PART_PRETRANS, 0, "%pretrans"},
{ PART_POSTTRANS, 0, "%posttrans"},
{ PART_PRE, 0, "%pre"},
{ PART_POST, 0, "%post"},
{ PART_FILES, 0, "%files"},
{ PART_CHANGELOG, 0, "%changelog"},
{ PART_DESCRIPTION, 0, "%description"},
{ PART_TRIGGERPOSTUN, 0, "%triggerpostun"},
{ PART_TRIGGERPREIN, 0, "%triggerprein"},
{ PART_TRIGGERUN, 0, "%triggerun"},
{ PART_TRIGGERIN, 0, "%triggerin"},
{ PART_TRIGGERIN, 0, "%trigger"},
{ PART_VERIFYSCRIPT, 0, "%verifyscript"},
{ PART_SANITYCHECK, 0, "%sanitycheck"},
{0, 0, NULL}
}

Referenced by isPart().