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

rpmfc.c File Reference

#include "system.h"
#include <signal.h>
#include <rpmbuild.h>
#include <argv.h>
#include <rpmfc.h>
#include <rpmds.h>
#include <rpmfi.h>
#include "debug.h"

Go to the source code of this file.

Data Structures

struct  rpmfcApplyTbl_s
struct  DepMsg_s

Defines

#define _RPMDS_INTERNAL

Typedefs

typedef rpmfcApplyTbl_srpmfcApplyTbl
typedef DepMsg_sDepMsg_t

Functions

int rpmfcExpandAppend (ARGV_t *argvp, const ARGV_t av)
StringBuf getOutputFrom (const char *dir, ARGV_t argv, const char *writePtr, int writeBytesLeft, int failNonZero)
int rpmfcExec (ARGV_t av, StringBuf sb_stdin, StringBuf *sb_stdoutp, int failnonzero)
 Return helper output.
int rpmfcSaveArg (ARGV_t *argvp, const char *key)
char * rpmfcFileDep (char *buf, int ix, rpmds ds)
int rpmfcHelper (rpmfc fc, unsigned char deptype, const char *nsdep)
 Run per-interpreter dependency helper.
int rpmfcColoring (const char *fmstr)
 Return file color given file(1) string.
void rpmfcPrint (const char *msg, rpmfc fc, FILE *fp)
 Print results of file classification.
rpmfc rpmfcFree (rpmfc fc)
 Destroy a file classifier.
rpmfc rpmfcNew (void)
 Create a file classifier.
int rpmfcSCRIPT (rpmfc fc)
 Extract script dependencies.
int rpmfcELF (rpmfc fc)
 Extract Elf dependencies.
int rpmfcApply (rpmfc fc)
 Build file/package dependency dictionary and mappings.
int rpmfcClassify (rpmfc fc, ARGV_t argv)
 Build file class dictionary and mappings.
void printDeps (Header h)
int rpmfcGenerateDependsHelper (const Spec spec, Package pkg, rpmfi fi)
int rpmfcGenerateDepends (const Spec spec, Package pkg)
 Generate package dependencies.

Variables

rpmfcTokens_s rpmfcTokens []
rpmfcApplyTbl_s rpmfcApplyTable []
DepMsg_s depMsgs []
DepMsg_t DepMsgs = depMsgs


Define Documentation

#define _RPMDS_INTERNAL
 

Definition at line 9 of file rpmfc.c.


Typedef Documentation

typedef struct DepMsg_s* DepMsg_t
 

Definition at line 1266 of file rpmfc.c.

Referenced by printDeps(), and rpmfcGenerateDependsHelper().

typedef struct rpmfcApplyTbl_s * rpmfcApplyTbl
 

Referenced by rpmfcApply().


Function Documentation

void printDeps Header  h  )  [static]
 

Definition at line 1336 of file rpmfc.c.

References DepMsg_t, DepMsg_s::ftag, Header, int_32, DepMsg_s::mask, DepMsg_s::msg, DepMsg_s::ntag, rpmds, rpmdsDNEVR(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), RPMMESS_NORMAL, rpmMessage, and DepMsg_s::xor.

Referenced by rpmfcGenerateDepends().

int rpmfcApply rpmfc  fc  ) 
 

Build file/package dependency dictionary and mappings.

Parameters:
fc file classifier
Returns:
0 on success

Definition at line 1091 of file rpmfc.c.

References argiAdd(), argiCount(), argvCount(), rpmfcApplyTbl_s::colormask, rpmfc_s::ddict, rpmfc_s::ddictx, rpmfc_s::fcolor, rpmfc_s::fddictn, rpmfc_s::fddictx, rpmfc_s::fn, rpmfcApplyTbl_s::func, int_32, rpmfc_s::ix, rpmfc_s::provides, rpmfc_s::requires, rpmds, rpmdsFind(), rpmdsFree(), rpmdsSingle(), rpmfc, rpmfcApplyTbl, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and ARGI_s::vals.

Referenced by main(), and rpmfcGenerateDepends().

int rpmfcClassify rpmfc  fc,
ARGV_t  argv
 

Build file class dictionary and mappings.

Parameters:
fc file classifier
argv files to classify
Returns:
0 on success

Definition at line 1180 of file rpmfc.c.

References argiAdd(), argv, ARGV_t, argvAdd(), argvCount(), argvFree(), argvSearch(), rpmfc_s::cdict, rpmfc_s::fcdictx, rpmfc_s::fcolor, rpmfc_s::fddictn, rpmfc_s::fddictx, rpmfc_s::fknown, fmagic, fmagicProcess(), fmagicSetup(), rpmfc_s::fn, rpmfc_s::fwhite, rpmfc_s::ix, fmagic_s::magicfile, rpmfc_s::nfiles, fmagic_s::nob, fmagic_s::obp, fmagic_s::obuf, rpmfc, RPMFC_WHITE, rpmfcColoring(), rpmfcSaveArg(), RPMMESS_DEBUG, and rpmMessage.

Referenced by main(), and rpmfcGenerateDepends().

int rpmfcColoring const char *  fmstr  ) 
 

Return file color given file(1) string.

Parameters:
fmstr file(1) string
Returns:
file color

Definition at line 547 of file rpmfc.c.

References rpmfcTokens_s::colors, rpmfcToken, and rpmfcTokens_s::token.

Referenced by rpmfcClassify().

int rpmfcELF rpmfc  fc  )  [static]
 

Extract Elf dependencies.

Parameters:
fc file classifier
Returns:
0 on success

Definition at line 770 of file rpmfc.c.

References _free(), rpmfc_s::ddict, rpmfc_s::fn, int_32, rpmfc_s::ix, rpmfc_s::provides, rpmfc_s::requires, rpmds, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmExpandNumeric(), rpmfc, rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMTAG_PROVIDES, RPMTAG_REQUIRENAME, rpmfc_s::skipProv, rpmfc_s::skipReq, stpcpy(), and xstrdup().

int rpmfcExec ARGV_t  av,
StringBuf  sb_stdin,
StringBuf sb_stdoutp,
int  failnonzero
 

Return helper output.

Parameters:
av helper argv (with possible macros)
sb_stdin helper input
Return values:
*sb_stdoutp helper output
Parameters:
failnonzero IS non-zero helper exit status a failure?

Definition at line 236 of file rpmfc.c.

References _free(), ARGV_t, argvAppend(), argvFree(), freeStringBuf(), getOutputFrom(), getStringBuf(), poptParseArgvString(), rpmExpand(), rpmfcExpandAppend(), and StringBuf.

Referenced by checkFiles(), rpmfcGenerateDependsHelper(), and rpmfcHelper().

int rpmfcExpandAppend ARGV_t argvp,
const ARGV_t  av
[static]
 

Definition at line 24 of file rpmfc.c.

References argv, ARGV_t, argvCount(), rpmExpand(), and xrealloc().

Referenced by rpmfcExec().

char* rpmfcFileDep char *  buf,
int  ix,
rpmds  ds
[static]
 

Definition at line 313 of file rpmfc.c.

References int_32, rpmdsEVR(), rpmdsFlags(), rpmdsN(), rpmdsTagN(), RPMTAG_PROVIDENAME, and RPMTAG_REQUIRENAME.

Referenced by rpmfcELF(), rpmfcHelper(), and rpmfcSCRIPT().

rpmfc rpmfcFree rpmfc  fc  ) 
 

Destroy a file classifier.

Parameters:
fc file classifier
Returns:
NULL always

Definition at line 639 of file rpmfc.c.

References _free(), argiFree(), argvFree(), rpmfc_s::cdict, rpmfc_s::ddict, rpmfc_s::ddictx, rpmfc_s::fcdictx, rpmfc_s::fcolor, rpmfc_s::fddictn, rpmfc_s::fddictx, rpmfc_s::fn, freeStringBuf(), rpmfc_s::provides, rpmfc_s::requires, rpmdsFree(), rpmfc, rpmfc_s::sb_java, rpmfc_s::sb_perl, and rpmfc_s::sb_python.

Referenced by main(), and rpmfcGenerateDepends().

int rpmfcGenerateDepends const Spec  spec,
Package  pkg
 

Generate package dependencies.

Parameters:
spec spec file control
pkg package control
Returns:
0 on success

Definition at line 1460 of file rpmfc.c.

References argiCount(), argiData(), ARGV_t, argvCount(), argvData(), argvFree(), Package_s::autoProv, Package_s::autoReq, rpmfc_s::cdict, Package_s::cpioList, rpmfc_s::ddictx, Package_s::ds, rpmfc_s::fcdictx, rpmfc_s::fcolor, rpmfc_s::fddictn, rpmfc_s::fddictx, rpmfc_s::fknown, Package_s::header, headerAddEntry(), headerRemoveEntry(), int_32, rpmfc_s::nfiles, Package, printDeps(), rpmfc_s::provides, rpmfc_s::requires, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, rpmds, rpmdsCount(), rpmdsEVR(), rpmdsFree(), rpmdsMerge(), rpmdsN(), rpmdsNew(), rpmdsSingle(), rpmExpandNumeric(), rpmfc, rpmfcApply(), rpmfcClassify(), rpmfcFree(), rpmfcGenerateDependsHelper(), rpmfcNew(), rpmfcPrint(), rpmfi, rpmfiFC(), rpmfiFFlags(), rpmfiFN(), rpmfiInit(), rpmfileAttrs, rpmfiNext(), RPMSENSE_CONFIG, RPMSENSE_EQUAL, RPMTAG_CLASSDICT, RPMTAG_DEPENDSDICT, RPMTAG_FILECLASS, RPMTAG_FILECOLORS, RPMTAG_FILEDEPENDSN, RPMTAG_FILEDEPENDSX, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, rpmfc_s::skipProv, rpmfc_s::skipReq, Spec, rpmfc_s::tracked, xcalloc(), and xstrdup().

Referenced by processBinaryFiles().

int rpmfcGenerateDependsHelper const Spec  spec,
Package  pkg,
rpmfi  fi
[static]
 

Definition at line 1382 of file rpmfc.c.

References _, _free(), appendLineStringBuf, DepMsg_s::argv, Package_s::autoProv, Package_s::autoReq, DepMsg_t, freeStringBuf(), DepMsg_s::ftag, getStringBuf(), DepMsg_s::msg, newStringBuf(), DepMsg_s::ntag, Package, parseRCPOT(), rpmError, rpmExpand(), rpmfcExec(), rpmfiFN(), rpmfiInit(), rpmfiNext(), RPMMESS_NORMAL, rpmMessage, RPMTAG_PROVIDEFLAGS, RPMTAG_REQUIREFLAGS, Spec, and StringBuf.

Referenced by rpmfcGenerateDepends().

int rpmfcHelper rpmfc  fc,
unsigned char  deptype,
const char *  nsdep
[static]
 

Run per-interpreter dependency helper.

Parameters:
fc file classifier
deptype 'P' == Provides:, 'R' == Requires:, helper
nsdep class name for interpreter (e.g. "perl")
Returns:
0 on success

Definition at line 346 of file rpmfc.c.

References appendLineStringBuf, ARGV_t, argvCount(), argvFree(), argvSplit(), rpmfc_s::ddict, rpmfc_s::fn, freeStringBuf(), getStringBuf(), int_32, rpmfc_s::ix, newStringBuf(), rpmfc_s::provides, rpmfc_s::requires, rpmds, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmfc, rpmfcExec(), rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_EQUAL, RPMSENSE_LESS, RPMSENSE_RPMLIB, RPMTAG_REQUIRENAME, rpmfc_s::skipProv, rpmfc_s::skipReq, snprintf(), StringBuf, and rpmfc_s::tracked.

Referenced by rpmfcSCRIPT().

rpmfc rpmfcNew void   ) 
 

Create a file classifier.

Returns:
new file classifier

Definition at line 663 of file rpmfc.c.

References rpmfc, and xcalloc().

Referenced by main(), and rpmfcGenerateDepends().

void rpmfcPrint const char *  msg,
rpmfc  fc,
FILE *  fp
 

Print results of file classification.

Todo:
Remove debugging routine.
Parameters:
msg message prefix (NULL for none)
fc file classifier
fp output file handle (NULL for stderr)

Definition at line 562 of file rpmfc.c.

References rpmfc_s::cdict, rpmfc_s::ddictx, rpmfc_s::fcdictx, rpmfc_s::fcolor, rpmfc_s::fddictn, rpmfc_s::fddictx, rpmfc_s::fn, rpmfc_s::nfiles, rpmfc_s::provides, rpmfc_s::requires, rpmdsCount(), rpmdsDNEVR(), rpmdsNext(), rpmdsSetIx(), rpmfc, and ARGI_s::vals.

Referenced by main(), and rpmfcGenerateDepends().

int rpmfcSaveArg ARGV_t argvp,
const char *  key
[static]
 

Definition at line 300 of file rpmfc.c.

References argvAdd(), argvSearch(), and argvSort().

Referenced by rpmfcClassify(), rpmfcELF(), rpmfcHelper(), and rpmfcSCRIPT().

int rpmfcSCRIPT rpmfc  fc  )  [static]
 

Extract script dependencies.

Parameters:
fc file classifier
Returns:
0 on success

Definition at line 674 of file rpmfc.c.

References rpmfc_s::ddict, rpmfc_s::fcolor, rpmfc_s::fn, rpmfc_s::ix, rpmfc_s::requires, rpmds, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmfc, rpmfcFileDep(), rpmfcHelper(), rpmfcSaveArg(), RPMSENSE_FIND_REQUIRES, RPMTAG_REQUIRENAME, and ARGI_s::vals.


Variable Documentation

DepMsg_t DepMsgs = depMsgs [static]
 

Definition at line 1332 of file rpmfc.c.

struct DepMsg_s depMsgs[] [static]
 

Definition at line 1285 of file rpmfc.c.

struct rpmfcApplyTbl_s rpmfcApplyTable[] [static]
 

Initial value:

 {
    { rpmfcELF,         RPMFC_ELF },
    { rpmfcSCRIPT,      (RPMFC_SCRIPT|RPMFC_PERL) },
    { NULL, 0 }
}

Definition at line 1085 of file rpmfc.c.

struct rpmfcTokens_s rpmfcTokens[] [static]
 

Definition at line 466 of file rpmfc.c.


Generated on Sat Apr 9 12:20:15 2005 for rpm by  doxygen 1.3.9.1