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

build/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  DepMsg_s
struct  rpmfcApplyTbl_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)
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 1227 of file rpmfc.c.

typedef struct rpmfcApplyTbl_s * rpmfcApplyTbl
 


Function Documentation

void printDeps Header    h [static]
 

Definition at line 1297 of file rpmfc.c.

References DepMsg_s::ftag, 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 1052 of file rpmfc.c.

References argiAdd(), 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(), 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 1141 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, 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_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 512 of file rpmfc.c.

References rpmfcTokens_s::colors, RPMFC_BLACK, RPMFC_INCLUDE, 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 735 of file rpmfc.c.

References _free(), rpmfc_s::ddict, EI_CLASS, ELFCLASS64, ET_EXEC, rpmfc_s::fn, int_32, rpmfc_s::ix, rpmfc_s::provides, rpmfc_s::requires, rpmds, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmExpandNumeric(), rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMTAG_PROVIDENAME, 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 201 of file rpmfc.c.

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

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

References int_32, rpmds, 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 604 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_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 1420 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, printDeps(), rpmfc_s::provides, rpmfc_s::requires, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, rpmds, rpmdsCount(), rpmdsEVR(), rpmdsFree(), rpmdsMerge(), rpmdsN(), rpmdsNew(), rpmdsSingle(), rpmExpandNumeric(), rpmfcApply(), rpmfcClassify(), rpmfcFree(), rpmfcGenerateDependsHelper(), rpmfcNew(), rpmfcPrint(), rpmfi, rpmfiFC(), rpmfiFFlags(), rpmfiFN(), rpmfiInit(), RPMFILE_CONFIG, 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, rpmfc_s::tracked, xcalloc(), and xstrdup().

Referenced by processBinaryFiles().

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

Definition at line 1342 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(), rpmfi, rpmfiFN(), rpmfiInit(), rpmfiNext(), RPMMESS_NORMAL, rpmMessage, RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMTAG_PROVIDEFLAGS, and RPMTAG_REQUIREFLAGS.

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 311 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(), rpmfcExec(), rpmfcFileDep(), rpmfcSaveArg(), RPMSENSE_EQUAL, RPMSENSE_FIND_PROVIDES, RPMSENSE_FIND_REQUIRES, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_RPMLIB, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, rpmfc_s::skipProv, rpmfc_s::skipReq, snprintf(), and rpmfc_s::tracked.

Referenced by rpmfcSCRIPT().

rpmfc rpmfcNew void   
 

Definition at line 628 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 527 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_BLACK, and ARGI_s::vals.

Referenced by main(), and rpmfcGenerateDepends().

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

Definition at line 265 of file rpmfc.c.

References ARGV_t, 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 639 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_MODULE, RPMFC_PERL, RPMFC_PYTHON, rpmfcFileDep(), rpmfcHelper(), rpmfcSaveArg(), RPMSENSE_FIND_REQUIRES, RPMTAG_REQUIRENAME, and ARGI_s::vals.


Variable Documentation

DepMsg_t DepMsgs = depMsgs [static]
 

Definition at line 1293 of file rpmfc.c.

struct DepMsg_s depMsgs[] [static]
 

Definition at line 1246 of file rpmfc.c.

struct rpmfcApplyTbl_s rpmfcApplyTable[] [static]
 

Initial value:

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

Definition at line 1046 of file rpmfc.c.

struct rpmfcTokens_s rpmfcTokens[] [static]
 

Definition at line 431 of file rpmfc.c.


Generated on Sun Oct 26 13:02:04 2003 for rpm by doxygen1.2.18