lib/rpmrc.c File Reference

#include "system.h"
#include <stdarg.h>
#include <rpmcli.h>
#include <rpmmacro.h>
#include <rpmlua.h>
#include <rpmds.h>
#include <mire.h>
#include "misc.h"
#include "debug.h"

Include dependency graph for rpmrc.c:

Go to the source code of this file.

Data Structures

struct  machCacheEntry_s
struct  machCache_s
struct  machEquivInfo_s
struct  machEquivTable_s
struct  rpmvarValue
struct  rpmOption
struct  defaultEntry_s
struct  canonEntry_s
struct  tableType_s
struct  cpu_vendor_os_gnu

Defines

#define __power_pc()   0
#define _MIRE_INTERNAL
#define RPMVAR_OPTFLAGS   3
#define RPMVAR_INCLUDE   43
#define RPMVAR_MACROFILES   49
#define RPMVAR_NUM   55
#define OS   0
#define ARCH   1
#define _TOPDIRMACRO   "%{_topdir}/"

Typedefs

typedef const char * cptr_t
typedef machCacheEntry_smachCacheEntry
typedef machCache_smachCache
typedef machEquivInfo_smachEquivInfo
typedef machEquivTable_smachEquivTable
typedef defaultEntry_sdefaultEntry
typedef canonEntry_scanonEntry
typedef tableType_stableType
typedef cpu_vendor_os_gnuCVOG_t

Functions

static void rpmRebuildTargetVars (const char **target, const char **canontarget)
static int optionCompare (const void *a, const void *b)
static machCacheEntry machCacheFindEntry (const machCache cache, const char *key)
static int machCompatCacheAdd (char *name, const char *fn, int linenum, machCache cache)
static machEquivInfo machEquivSearch (const machEquivTable table, const char *name)
static void machAddEquiv (machEquivTable table, const char *name, int distance)
static void machCacheEntryVisit (machCache cache, machEquivTable table, const char *name, int distance)
static void rebuildCompatTables (int type, const char *name)
static int addCanon (canonEntry *table, int *tableLen, char *line, const char *fn, int lineNum)
static int addDefault (defaultEntry *table, int *tableLen, char *line, const char *fn, int lineNum)
static canonEntry lookupInCanonTable (const char *name, const canonEntry table, int tableLen)
static const char * lookupInDefaultTable (const char *name, const defaultEntry table, int tableLen)
static const char * rpmGetVarArch (int var, const char *arch)
static void freeRpmVar (struct rpmvarValue *orig)
static void rpmSetVar (int var, const char *val)
 Set value of an rpmrc variable.
static void setVarDefault (int var, const char *macroname, const char *val, const char *body)
static void setPathDefault (int var, const char *macroname, const char *subdir)
static void setDefaults (void)
static void rpmSetVarArch (int var, const char *val, const char *arch)
static int doReadRC (FD_t fd, const char *urlfn)
static int parseCVOG (const char *str, CVOG_t *cvogp)
static void * mireFreeAll (miRE mire, int nre)
 Destroy platform patterns.
static int mireAppend (rpmMireMode mode, int tag, const char *pattern, miRE *mi_rep, int *mi_nrep)
 Append pattern to array.
static int rpmPlatform (const char *platform)
 Read and configure /etc/rpm/platform patterns.
int rpmPlatformScore (const char *platform, void *mi_re, int mi_nre)
 Return score of a platform string.
static void defaultMachine (const char **arch, const char **os)
void rpmSetTables (int archTable, int osTable)
int rpmMachineScore (int type, const char *name)
void rpmGetMachine (const char **arch, const char **os)
void rpmSetMachine (const char *arch, const char *os)
 Set current arch/os names.
static void getMachineInfo (int type, const char **name, int *num)
void rpmGetArchInfo (const char **name, int *num)
void rpmGetOsInfo (const char **name, int *num)
void rpmFreeRpmrc (void)
 Destroy rpmrc arch/os compatibility tables.
static int rpmReadRC (const char *rcfiles)
 Read rpmrc (and macro) configuration file(s).
int rpmReadConfigFiles (const char *file, const char *target)
 Read macro configuration file(s) for a target.
int rpmShowRC (FILE *fp)
 Display current rpmrc (and macro) configuration.

Variables

const char * rpmRcfiles = RPMRCFILES
 The default rpmrc files to be read.
static const char * configTarget = NULL
static const char * platform = "/etc/rpm/platform"
void * platpat = NULL
int nplatpat = 0
static struct tableType_s tables [RPM_MACHTABLE_COUNT]
static struct rpmOption optionTable []
static int optionTableSize = sizeof(optionTable) / sizeof(*optionTable)
static cptr_t current [2]
static int currTables [2] = { RPM_MACHTABLE_INSTOS, RPM_MACHTABLE_INSTARCH }
static struct rpmvarValue values [55]
static int defaultsInitialized = 0
static const char * ___build_pre


Define Documentation

 
#define __power_pc (  )     0

Definition at line 12 of file rpmrc.c.

Referenced by defaultMachine().

#define _MIRE_INTERNAL

Definition at line 20 of file rpmrc.c.

#define _TOPDIRMACRO   "%{_topdir}/"

Referenced by setPathDefault().

#define ARCH   1

Definition at line 136 of file rpmrc.c.

Referenced by doReadRC(), rpmGetArchInfo(), rpmGetMachine(), rpmGetVarArch(), rpmRebuildTargetVars(), rpmSetMachine(), rpmSetTables(), and rpmShowRC().

#define OS   0

Definition at line 135 of file rpmrc.c.

Referenced by rpmGetMachine(), rpmGetOsInfo(), rpmRebuildTargetVars(), rpmSetMachine(), rpmSetTables(), and rpmShowRC().

#define RPMVAR_INCLUDE   43

Definition at line 120 of file rpmrc.c.

Referenced by doReadRC().

#define RPMVAR_MACROFILES   49

Definition at line 121 of file rpmrc.c.

Referenced by doReadRC(), and rpmReadRC().

#define RPMVAR_NUM   55

Definition at line 123 of file rpmrc.c.

#define RPMVAR_OPTFLAGS   3

Definition at line 119 of file rpmrc.c.

Referenced by rpmRebuildTargetVars(), and setDefaults().


Typedef Documentation

typedef struct canonEntry_s * canonEntry

typedef const char* cptr_t

Definition at line 39 of file rpmrc.c.

typedef struct cpu_vendor_os_gnu * CVOG_t

typedef struct defaultEntry_s * defaultEntry

typedef struct machCache_s * machCache

typedef struct machCacheEntry_s * machCacheEntry

typedef struct machEquivInfo_s * machEquivInfo

typedef struct machEquivTable_s * machEquivTable

typedef struct tableType_s * tableType


Function Documentation

static int addCanon ( canonEntry table,
int *  tableLen,
char *  line,
const char *  fn,
int  lineNum 
) [static]

Definition at line 338 of file rpmrc.c.

References _, canonEntry_s::name, canonEntry_s::num, RPMERR_RPMRC, rpmError, canonEntry_s::short_name, strtoul, xrealloc(), and xstrdup().

Referenced by doReadRC().

static int addDefault ( defaultEntry table,
int *  tableLen,
char *  line,
const char *  fn,
int  lineNum 
) [static]

Definition at line 392 of file rpmrc.c.

References _, defaultEntry_s::defName, defaultEntry_s::name, RPMERR_RPMRC, rpmError, xrealloc(), and xstrdup().

Referenced by doReadRC().

static void defaultMachine ( const char **  arch,
const char **  os 
) [static]

Definition at line 1286 of file rpmrc.c.

References __power_pc, _free(), tableType_s::canons, tableType_s::canonsLength, configTarget, cpu_vendor_os_gnu::cpu, Fclose(), Ferror(), Fopen(), Fread(), lookupInCanonTable(), cpu_vendor_os_gnu::os, parseCVOG(), platform, RPM_MACHTABLE_INSTARCH, RPM_MACHTABLE_INSTOS, rpmExpand(), rpmPlatform(), canonEntry_s::short_name, cpu_vendor_os_gnu::str, tables, xcalloc(), and xisdigit().

Referenced by rpmRebuildTargetVars(), rpmSetMachine(), and rpmSetTables().

static int doReadRC ( FD_t  fd,
const char *  urlfn 
) [static]

Definition at line 654 of file rpmrc.c.

References _, _free(), addCanon(), addDefault(), addMacro(), alloca(), ARCH, rpmOption::archSpecific, current, Fclose(), fdSize(), Ferror(), Fopen(), Fread(), Fstrerror(), rpmOption::localize, machCompatCacheAdd(), rpmOption::macroize, rpmOption::name, next, optionCompare(), optionTable, optionTableSize, RMIL_RPMRC, RPM_MACHTABLE_COUNT, RPMERR_RPMRC, rpmError, rpmGetPath(), rpmRebuildTargetVars(), rpmSetVarArch(), RPMVAR_INCLUDE, RPMVAR_MACROFILES, tables, rpmOption::var, xisspace(), and xmalloc().

Referenced by rpmReadRC().

static void freeRpmVar ( struct rpmvarValue orig  )  [static]

Definition at line 480 of file rpmrc.c.

References _free(), rpmvarValue::arch, rpmvarValue::next, next, and rpmvarValue::value.

Referenced by rpmSetVar().

static void getMachineInfo ( int  type,
const char **  name,
int *  num 
) [static]

Definition at line 1671 of file rpmrc.c.

References current, currTables, lookupInCanonTable(), canonEntry_s::num, canonEntry_s::short_name, and tables.

Referenced by rpmGetArchInfo(), rpmGetOsInfo(), and rpmRebuildTargetVars().

static canonEntry lookupInCanonTable ( const char *  name,
const canonEntry  table,
int  tableLen 
) [static]

Definition at line 427 of file rpmrc.c.

Referenced by defaultMachine(), and getMachineInfo().

static const char* lookupInDefaultTable ( const char *  name,
const defaultEntry  table,
int  tableLen 
) [static]

Definition at line 444 of file rpmrc.c.

References defaultEntry_s::defName.

Referenced by rpmSetMachine().

static void machAddEquiv ( machEquivTable  table,
const char *  name,
int  distance 
) [static]

Definition at line 258 of file rpmrc.c.

References machEquivTable_s::count, machEquivTable_s::list, machEquivInfo_s::name, machEquivInfo_s::score, xmalloc(), xrealloc(), xstrcasecmp(), and xstrdup().

Referenced by machCacheEntryVisit().

static void machCacheEntryVisit ( machCache  cache,
machEquivTable  table,
const char *  name,
int  distance 
) [static]

Definition at line 286 of file rpmrc.c.

References machCacheEntry_s::count, machCacheEntry_s::equivs, machAddEquiv(), machCacheFindEntry(), and machCacheEntry_s::visited.

static machCacheEntry machCacheFindEntry ( const machCache  cache,
const char *  key 
) [static]

Definition at line 164 of file rpmrc.c.

References machCache_s::cache, machCacheEntry_s::name, and machCache_s::size.

Referenced by machCacheEntryVisit(), and machCompatCacheAdd().

static int machCompatCacheAdd ( char *  name,
const char *  fn,
int  linenum,
machCache  cache 
) [static]

Definition at line 175 of file rpmrc.c.

References _, _free(), machCache_s::cache, machCacheEntry_s::count, machCacheEntry_s::equivs, machCacheFindEntry(), machCacheEntry_s::name, RPMERR_RPMRC, rpmError, machCache_s::size, machCacheEntry_s::visited, xisspace(), xmalloc(), xrealloc(), and xstrdup().

Referenced by doReadRC().

static machEquivInfo machEquivSearch ( const machEquivTable  table,
const char *  name 
) [static]

Definition at line 246 of file rpmrc.c.

References machEquivTable_s::count, machEquivTable_s::list, machEquivInfo_s::name, and xstrcasecmp().

Referenced by rpmMachineScore().

static int mireAppend ( rpmMireMode  mode,
int  tag,
const char *  pattern,
miRE *  mi_rep,
int *  mi_nrep 
) [static]

Append pattern to array.

Parameters:
mode type of pattern match
tag identifier (like an rpmTag)
pattern pattern to compile
Return values:
*mi_rep platform pattern array
*mi_nrep no. of patterns in array

Definition at line 961 of file rpmrc.c.

References xrealloc().

Referenced by rpmPlatform().

static void* mireFreeAll ( miRE  mire,
int  nre 
) [static]

Destroy platform patterns.

Parameters:
mire platform pattern array
nre no of patterns in array
Returns:
NULL always

Definition at line 940 of file rpmrc.c.

References _free().

Referenced by rpmFreeRpmrc(), and rpmPlatform().

static int optionCompare ( const void *  a,
const void *  b 
) [static]

Definition at line 156 of file rpmrc.c.

References xstrcasecmp().

Referenced by doReadRC().

static int parseCVOG ( const char *  str,
CVOG_t cvogp 
) [static]

Definition at line 879 of file rpmrc.c.

References _free(), cpu_vendor_os_gnu::str, xcalloc(), and xstrdup().

Referenced by defaultMachine(), and rpmPlatform().

static void rebuildCompatTables ( int  type,
const char *  name 
) [static]

Definition at line 307 of file rpmrc.c.

References _free(), machCache_s::cache, tableType_s::cache, machEquivTable_s::count, tableType_s::equiv, machEquivTable_s::list, machEquivInfo_s::name, machCache_s::size, tables, and machCacheEntry_s::visited.

Referenced by rpmSetMachine(), and rpmSetTables().

void rpmGetMachine ( const char **  arch,
const char **  os 
)

Definition at line 1622 of file rpmrc.c.

References ARCH, current, and OS.

static const char* rpmGetVarArch ( int  var,
const char *  arch 
) [static]

Definition at line 458 of file rpmrc.c.

References ARCH, current, next, and values.

Referenced by rpmReadRC(), rpmRebuildTargetVars(), rpmShowRC(), setPathDefault(), and setVarDefault().

static int rpmPlatform ( const char *  platform  )  [static]

Read and configure /etc/rpm/platform patterns.

Parameters:
platform path to platform patterns
Returns:
0 on success

Definition at line 984 of file rpmrc.c.

References _free(), addMacro(), cpu_vendor_os_gnu::cpu, cpu_vendor_os_gnu::gnu, mireAppend(), mireFreeAll(), nplatpat, cpu_vendor_os_gnu::os, parseCVOG(), platpat, rpmExpand(), rpmioSlurp(), cpu_vendor_os_gnu::str, cpu_vendor_os_gnu::vendor, and xisspace().

Referenced by defaultMachine().

static void rpmRebuildTargetVars ( const char **  target,
const char **  canontarget 
) [static]

Definition at line 1704 of file rpmrc.c.

References _free(), addMacro(), ARCH, defaultMachine(), delMacro(), getMachineInfo(), OS, RMIL_RPMRC, RPM_MACHTABLE_BUILDARCH, RPM_MACHTABLE_BUILDOS, RPM_MACHTABLE_INSTARCH, RPM_MACHTABLE_INSTOS, rpmcliRcfile, rpmGetVarArch(), rpmSetMachine(), rpmSetTables(), RPMVAR_OPTFLAGS, xmalloc(), xstrcasecmp(), xstrdup(), and xtolower().

Referenced by doReadRC(), and rpmReadConfigFiles().

static void rpmSetVarArch ( int  var,
const char *  val,
const char *  arch 
) [static]

Definition at line 614 of file rpmrc.c.

References _free(), next, values, xmalloc(), and xstrdup().

Referenced by doReadRC().

static void setDefaults ( void   )  [static]

Definition at line 576 of file rpmrc.c.

References ___build_pre, addMacro(), RMIL_DEFAULT, RPMVAR_OPTFLAGS, setPathDefault(), and setVarDefault().

Referenced by rpmReadRC().

static void setPathDefault ( int  var,
const char *  macroname,
const char *  subdir 
) [static]

Definition at line 525 of file rpmrc.c.

References _free(), _TOPDIRMACRO, addMacro(), alloca(), body(), RMIL_DEFAULT, rpmGetPath(), rpmGetVarArch(), and rpmSetVar().

Referenced by setDefaults().

static void setVarDefault ( int  var,
const char *  macroname,
const char *  val,
const char *  body 
) [static]

Definition at line 511 of file rpmrc.c.

References addMacro(), RMIL_DEFAULT, rpmGetVarArch(), and rpmSetVar().

Referenced by setDefaults().


Variable Documentation

const char* ___build_pre [static]

Initial value:

 "\n\
RPM_SOURCE_DIR=\"%{_sourcedir}\"\n\
RPM_BUILD_DIR=\"%{_builddir}\"\n\
RPM_OPT_FLAGS=\"%{optflags}\"\n\
RPM_ARCH=\"%{_arch}\"\n\
RPM_OS=\"%{_os}\"\n\
export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\n\
RPM_DOC_DIR=\"%{_docdir}\"\n\
export RPM_DOC_DIR\n\
RPM_PACKAGE_NAME=\"%{name}\"\n\
RPM_PACKAGE_VERSION=\"%{version}\"\n\
RPM_PACKAGE_RELEASE=\"%{release}\"\n\
export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\n\
%{?buildroot:RPM_BUILD_ROOT=\"%{buildroot}\"\n\
export RPM_BUILD_ROOT\n}\
"

Definition at line 559 of file rpmrc.c.

Referenced by setDefaults().

const char* configTarget = NULL [static]

Definition at line 30 of file rpmrc.c.

Referenced by defaultMachine(), and rpmReadConfigFiles().

cptr_t current[2] [static]

Definition at line 139 of file rpmrc.c.

Referenced by doReadRC(), getMachineInfo(), rpmGetMachine(), rpmGetVarArch(), rpmSetMachine(), and rpmShowRC().

int currTables[2] = { RPM_MACHTABLE_INSTOS, RPM_MACHTABLE_INSTARCH } [static]

Definition at line 142 of file rpmrc.c.

Referenced by getMachineInfo(), rpmSetMachine(), and rpmSetTables().

int defaultsInitialized = 0 [static]

Definition at line 148 of file rpmrc.c.

Referenced by rpmReadRC().

int nplatpat = 0

Definition at line 37 of file rpmrc.c.

Referenced by rpmFreeRpmrc(), rpmPlatform(), rpmPlatformScore(), and rpmtsAddInstallElement().

struct rpmOption optionTable[] [static]

Initial value:

 {
    { "include",                 43 ,                   0, 1,   0, 2 },
    { "macrofiles",              49 ,           0, 0,   0, 1 },
    { "optflags",                3 ,            1, 0,   1, 0 },
}

Definition at line 125 of file rpmrc.c.

Referenced by doReadRC(), and rpmShowRC().

int optionTableSize = sizeof(optionTable) / sizeof(*optionTable) [static]

Definition at line 133 of file rpmrc.c.

Referenced by doReadRC(), and rpmShowRC().

const char* platform = "/etc/rpm/platform" [static]

Definition at line 33 of file rpmrc.c.

Referenced by defaultMachine(), parseSpec(), and rpmtsAddInstallElement().

void* platpat = NULL

Definition at line 35 of file rpmrc.c.

Referenced by rpmFreeRpmrc(), rpmPlatform(), rpmPlatformScore(), and rpmtsAddInstallElement().

struct tableType_s tables[RPM_MACHTABLE_COUNT] [static]

Initial value:

 {
    { "arch", 1, 0 },
    { "os", 1, 0 },
    { "buildarch", 0, 1 },
    { "buildos", 0, 1 }
}

Definition at line 109 of file rpmrc.c.

Referenced by defaultMachine(), doReadRC(), getMachineInfo(), rebuildCompatTables(), rpmFreeRpmrc(), rpmMachineScore(), rpmSetMachine(), and rpmShowRC().

struct rpmvarValue values[55] [static]

Definition at line 145 of file rpmrc.c.

Referenced by rpmGetVarArch(), rpmSetVar(), and rpmSetVarArch().


Generated on Fri Aug 31 10:38:39 2007 for rpm by  doxygen 1.5.1