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

static int rpmfcExpandAppend (ARGV_t *argvp, const ARGV_t av)
static StringBuf getOutputFrom (const char *dir, ARGV_t argv, const char *writePtr, int writeBytesLeft, int failNonZero)
 Return output from helper script.
int rpmfcExec (ARGV_t av, StringBuf sb_stdin, StringBuf *sb_stdoutp, int failnonzero)
 Return helper output.
static int rpmfcSaveArg (ARGV_t *argvp, const char *key)
static char * rpmfcFileDep (char *buf, int ix, rpmds ds)
static 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.
static int rpmfcSCRIPT (rpmfc fc)
 Extract script dependencies.
static 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.
static void printDeps (Header h)
static int rpmfcGenerateDependsHelper (const Spec spec, Package pkg, rpmfi fi)
int rpmfcGenerateDepends (const Spec spec, Package pkg)
 Generate package dependencies.

Variables

static struct rpmfcTokens_s rpmfcTokens []
static struct rpmfcApplyTbl_s rpmfcApplyTable []
static struct DepMsg_s depMsgs []
static 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 1232 of file rpmfc.c.

typedef struct rpmfcApplyTbl_s * rpmfcApplyTbl
 


Function Documentation

static void printDeps Header  h  )  [static]
 

Definition at line 1302 of file rpmfc.c.

References DepMsg_s::ftag, DepMsg_s::mask, DepMsg_s::msg, DepMsg_s::ntag, 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 1057 of file rpmfc.c.

References argiAdd(), argiCount(), argvCount(), rpmfcApplyTbl_s::colormask, rpmfcApplyTbl_s::func, rpmdsFind(), rpmdsFree(), rpmdsSingle(), rpmfcApplyTable, RPMTAG_PROVIDENAME, and RPMTAG_REQUIRENAME.

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 1146 of file rpmfc.c.

References argiAdd(), argvAdd(), argvCount(), argvFree(), argvSearch(), default_magicfile, fmagicProcess(), fmagicSetup(), global_fmagic, fmagic_s::magicfile, fmagic_s::nob, fmagic_s::obp, fmagic_s::obuf, RPMFC_INCLUDE, 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 513 of file rpmfc.c.

References RPMFC_INCLUDE.

Referenced by rpmfcClassify().

static int rpmfcELF rpmfc  fc  )  [static]
 

Extract Elf dependencies.

Parameters:
fc file classifier
Returns:
0 on success

Definition at line 736 of file rpmfc.c.

References _free(), EI_CLASS, ELFCLASS64, ET_EXEC, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmExpandNumeric(), rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMTAG_PROVIDENAME, RPMTAG_PROVIDES, RPMTAG_REQUIRENAME, 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 202 of file rpmfc.c.

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

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

static int rpmfcExpandAppend ARGV_t argvp,
const ARGV_t  av
[static]
 

Definition at line 24 of file rpmfc.c.

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

Referenced by rpmfcExec().

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

Definition at line 279 of file rpmfc.c.

References 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 605 of file rpmfc.c.

References _free(), argiFree(), argvFree(), freeStringBuf(), and rpmdsFree().

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 1426 of file rpmfc.c.

References _rpmfc_debug, argiCount(), argiData(), argvCount(), argvData(), argvFree(), Package_s::autoProv, Package_s::autoReq, Package_s::cpioList, Package_s::ds, Package_s::header, headerAddEntry(), headerRemoveEntry(), DepMsg_s::msg, printDeps(), RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, rpmdsCount(), rpmdsEVR(), rpmdsFree(), rpmdsMerge(), rpmdsN(), rpmdsNew(), rpmdsSingle(), rpmExpandNumeric(), rpmfcApply(), rpmfcClassify(), rpmfcFree(), rpmfcGenerateDependsHelper(), rpmfcNew(), rpmfcPrint(), rpmfiFC(), rpmfiFFlags(), rpmfiFN(), rpmfiInit(), RPMFILE_CONFIG, 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, xcalloc(), and xstrdup().

Referenced by processBinaryFiles().

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

Definition at line 1348 of file rpmfc.c.

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

Referenced by rpmfcGenerateDepends().

static 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 312 of file rpmfc.c.

References appendLineStringBuf, argvCount(), argvFree(), argvSplit(), freeStringBuf(), getStringBuf(), newStringBuf(), rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmfcExec(), rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_EQUAL, RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_RPMLIB, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and snprintf().

Referenced by rpmfcSCRIPT().

rpmfc rpmfcNew void   ) 
 

Create a file classifier.

Returns:
new file classifier

Definition at line 629 of file rpmfc.c.

References 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 528 of file rpmfc.c.

References rpmdsCount(), rpmdsDNEVR(), rpmdsNext(), and rpmdsSetIx().

Referenced by main(), and rpmfcGenerateDepends().

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

Definition at line 266 of file rpmfc.c.

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

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

static int rpmfcSCRIPT rpmfc  fc  )  [static]
 

Extract script dependencies.

Parameters:
fc file classifier
Returns:
0 on success

Definition at line 640 of file rpmfc.c.

References rpmdsFree(), rpmdsMerge(), rpmdsSingle(), RPMFC_MODULE, RPMFC_PERL, RPMFC_PYTHON, rpmfcFileDep(), rpmfcHelper(), rpmfcSaveArg(), RPMSENSE_FIND_REQUIRES, and RPMTAG_REQUIRENAME.


Variable Documentation

DepMsg_t DepMsgs = depMsgs [static]
 

Definition at line 1298 of file rpmfc.c.

struct DepMsg_s depMsgs[] [static]
 

Definition at line 1251 of file rpmfc.c.

struct rpmfcApplyTbl_s rpmfcApplyTable[] [static]
 

Initial value:

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

Definition at line 1051 of file rpmfc.c.

Referenced by rpmfcApply().

struct rpmfcTokens_s rpmfcTokens[] [static]
 

Definition at line 432 of file rpmfc.c.


Generated on Fri Feb 24 08:33:39 2006 for rpm by  doxygen 1.4.5