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

build/files.c File Reference

The post-build, pre-packaging file tree walk to assemble the package manifest. More...

#include "system.h"
#include <regex.h>
#include <signal.h>
#include <rpmio_internal.h>
#include <rpmbuild.h>
#include <rpmmacro.h>
#include "buildio.h"
#include "myftw.h"
#include "md5.h"
#include "debug.h"

Go to the source code of this file.

Data Structures

struct  AttrRec
struct  DepMsg_t
struct  FileList
 Package file tree walk data. More...

struct  FileListRec
struct  VFA

Defines

#define MYALLPERMS   07777
#define SKIPWHITE(_x)    {while(*(_x) && (isspace(*_x) || *(_x) == ',')) (_x)++;}
#define SKIPNONWHITE(_x)   {while(*(_x) &&!(isspace(*_x) || *(_x) == ',')) (_x)++;}
#define MAXDOCDIR   1024
#define SPECD_DEFFILEMODE   (1<<0)
#define SPECD_DEFDIRMODE   (1<<1)
#define SPECD_DEFUID   (1<<2)
#define SPECD_DEFGID   (1<<3)
#define SPECD_DEFVERIFY   (1<<4)
#define SPECD_FILEMODE   (1<<8)
#define SPECD_DIRMODE   (1<<9)
#define SPECD_UID   (1<<10)
#define SPECD_GID   (1<<11)
#define SPECD_VERIFY   (1<<12)
#define fl_dev   fl_st.st_dev
#define fl_ino   fl_st.st_ino
#define fl_mode   fl_st.st_mode
#define fl_nlink   fl_st.st_nlink
#define fl_uid   fl_st.st_uid
#define fl_gid   fl_st.st_gid
#define fl_rdev   fl_st.st_rdev
#define fl_size   fl_st.st_size
#define fl_mtime   fl_st.st_mtime
#define isAttrDefault(_ars)    ((_ars)[0] == '-' && (_ars)[1] == '\0')

Typedefs

typedef struct VFA  VFA_t

Functions

void nullAttrRec (AttrRec *ar)
void freeAttrRec (AttrRec *ar)
void dupAttrRec (AttrRec *oar, AttrRec *nar)
char* strtokWithQuotes (char *s, char *delim)
void timeCheck (int tc, Header h)
int parseForVerify (char *buf, struct FileList *fl)
int parseForAttr (char *buf, struct FileList *fl)
int parseForConfig (char *buf, struct FileList *fl)
int langCmp (const void *ap, const void *bp)
int parseForLang (char *buf, struct FileList *fl)
int parseForRegexLang (const char *fileName, char **lang)
int parseForRegexMultiLib (const char *fileName)
int parseForSimple (Spec spec, Package pkg, char *buf, struct FileList *fl, const char **fileName)
int compareFileListRecs (const void *ap, const void *bp)
int isDoc (struct FileList *fl, const char *fileName)
void checkHardLinks (struct FileList *fl)
 Verify that file attributes scope over hardlinks correctly. More...

void genCpioListAndHeader (struct FileList *fl, TFI_t *cpioList, Header h, int isSrc)
void freeFileList (FileListRec *fileList, int count)
int addFile (struct FileList *fl, const char *diskURL, struct stat *statp)
int processBinaryFile (Package pkg, struct FileList *fl, const char *fileURL)
int processPackageFiles (Spec spec, Package pkg, int installSpecialDoc, int test)
void initSourceHeader (Spec spec)
int processSourceFiles (Spec spec)
StringBuf getOutputFrom (char *dir, char *argv[], const char *writePtr, int writeBytesLeft, int failNonZero)
int generateDepends (Spec spec, Package pkg, TFI_t cpioList, int multiLib)
void printDepMsg (DepMsg_t *dm, int count, const char **names, const char **versions, int *flags)
void printDeps (Header h)
int processBinaryFiles (Spec spec, int installSpecialDoc, int test)

Variables

int _noDirTokens
int multiLib = 0
VFA_t verifyAttrs []
VFA_t virtualFileAttributes []
DepMsg_t depMsgs []


Detailed Description

The post-build, pre-packaging file tree walk to assemble the package manifest.

Definition in file files.c.


Define Documentation

#define MAXDOCDIR   1024
 

Definition at line 32 of file files.c.

#define MYALLPERMS   07777
 

Definition at line 9 of file files.c.

#define SKIPNONWHITE( _x )   {while(*(_x) &&!(isspace(*_x) || *(_x) == ',')) (_x)++;}
 

Definition at line 30 of file files.c.

Referenced by parseForAttr(), parseForConfig(), parseForLang(), parseForVerify(), parseNoSource(), and parseRCPOT().

#define SKIPWHITE( _x )   {while(*(_x) && (isspace(*_x) || *(_x) == ',')) (_x)++;}
 

Definition at line 29 of file files.c.

Referenced by parseForAttr(), parseForConfig(), parseForLang(), parseForVerify(), parseNoSource(), and parseRCPOT().

#define SPECD_DEFDIRMODE   (1<<1)
 

Definition at line 37 of file files.c.

#define SPECD_DEFFILEMODE   (1<<0)
 

Definition at line 36 of file files.c.

#define SPECD_DEFGID   (1<<3)
 

Definition at line 39 of file files.c.

#define SPECD_DEFUID   (1<<2)
 

Definition at line 38 of file files.c.

#define SPECD_DEFVERIFY   (1<<4)
 

Definition at line 40 of file files.c.

#define SPECD_DIRMODE   (1<<9)
 

Definition at line 43 of file files.c.

#define SPECD_FILEMODE   (1<<8)
 

Definition at line 42 of file files.c.

#define SPECD_GID   (1<<11)
 

Definition at line 45 of file files.c.

#define SPECD_UID   (1<<10)
 

Definition at line 44 of file files.c.

#define SPECD_VERIFY   (1<<12)
 

Definition at line 46 of file files.c.

#define fl_dev   fl_st.st_dev
 

Definition at line 52 of file files.c.

#define fl_gid   fl_st.st_gid
 

Definition at line 57 of file files.c.

#define fl_ino   fl_st.st_ino
 

Definition at line 53 of file files.c.

#define fl_mode   fl_st.st_mode
 

Definition at line 54 of file files.c.

#define fl_mtime   fl_st.st_mtime
 

Definition at line 60 of file files.c.

#define fl_nlink   fl_st.st_nlink
 

Definition at line 55 of file files.c.

#define fl_rdev   fl_st.st_rdev
 

Definition at line 58 of file files.c.

#define fl_size   fl_st.st_size
 

Definition at line 59 of file files.c.

#define fl_uid   fl_st.st_uid
 

Definition at line 56 of file files.c.

#define isAttrDefault( _ars )   ((_ars)[0] == '-' && (_ars)[1] == '\0')
 

Definition at line 364 of file files.c.

Referenced by parseForAttr().


Typedef Documentation

typedef struct VFA VFA_t
 


Function Documentation

int addFile ( struct FileList * fl,
const char * diskURL,
struct stat * statp ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 1269 of file files.c.

Referenced by processBinaryFile().

void checkHardLinks ( struct FileList * fl ) [static]
 

Verify that file attributes scope over hardlinks correctly.

Todo:
only lang for now, finish other attributes later.
Parameters:
fl   package file tree walk data

Definition at line 883 of file files.c.

Referenced by processPackageFiles().

int compareFileListRecs ( const void * ap,
const void * bp ) [static]
 

Definition at line 857 of file files.c.

void dupAttrRec ( AttrRec * oar,
AttrRec * nar ) [static]
 

Definition at line 148 of file files.c.

Referenced by parseForAttr(), and processPackageFiles().

void freeAttrRec ( AttrRec * ar ) [static]
 

Definition at line 137 of file files.c.

Referenced by dupAttrRec(), and processPackageFiles().

void freeFileList ( FileListRec * fileList,
int count ) [static]
 

Definition at line 1256 of file files.c.

Referenced by processPackageFiles(), and processSourceFiles().

void genCpioListAndHeader ( struct FileList * fl,
TFI_t * cpioList,
Header h,
int isSrc ) [static]
 

Todo:
Should directories have doc/config attributes? (#14531)

Remove RPMTAG_OLDFILENAMES, add dirname/basename instead.

Parameters:
fl   package file tree walk data

Definition at line 953 of file files.c.

Referenced by processPackageFiles(), and processSourceFiles().

int generateDepends ( Spec spec,
Package pkg,
TFI_t cpioList,
int multiLib ) [static]
 

Definition at line 2101 of file files.c.

Referenced by processBinaryFiles().

StringBuf getOutputFrom ( char * dir,
char * argv[],
const char * writePtr,
int writeBytesLeft,
int failNonZero ) [static]
 

Definition at line 1913 of file files.c.

Referenced by generateDepends().

int isDoc ( struct FileList * fl,
const char * fileName ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 867 of file files.c.

Referenced by genCpioListAndHeader().

int langCmp ( const void * ap,
const void * bp ) [static]
 

Definition at line 551 of file files.c.

void nullAttrRec ( AttrRec * ar ) [static]
 

Definition at line 125 of file files.c.

Referenced by parseForAttr(), and processPackageFiles().

int parseForAttr ( char * buf,
struct FileList * fl ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 369 of file files.c.

Referenced by processPackageFiles().

int parseForConfig ( char * buf,
struct FileList * fl ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 493 of file files.c.

Referenced by processPackageFiles().

int parseForLang ( char * buf,
struct FileList * fl ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 558 of file files.c.

Referenced by processPackageFiles().

int parseForRegexLang ( const char * fileName,
char ** lang ) [static]
 

Definition at line 645 of file files.c.

Referenced by addFile().

int parseForRegexMultiLib ( const char * fileName ) [static]
 

Definition at line 686 of file files.c.

Referenced by addFile().

int parseForSimple ( Spec spec,
Package pkg,
char * buf,
struct FileList * fl,
const char ** fileName ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 739 of file files.c.

Referenced by processPackageFiles().

int parseForVerify ( char * buf,
struct FileList * fl ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 279 of file files.c.

Referenced by processPackageFiles().

void printDepMsg ( DepMsg_t * dm,
int count,
const char ** names,
const char ** versions,
int * flags ) [static]
 

Definition at line 2219 of file files.c.

Referenced by printDeps().

void printDeps ( Header h ) [static]
 

Definition at line 2260 of file files.c.

Referenced by processBinaryFiles().

int processBinaryFile ( Package pkg,
struct FileList * fl,
const char * fileURL ) [static]
 

Parameters:
fl   package file tree walk data

Definition at line 1442 of file files.c.

Referenced by processPackageFiles().

int processPackageFiles ( Spec spec,
Package pkg,
int installSpecialDoc,
int test ) [static]
 

Definition at line 1503 of file files.c.

Referenced by processBinaryFiles().

char * strtokWithQuotes ( char * s,
char * delim ) [static]
 

Definition at line 196 of file files.c.

Referenced by parseForSimple().

void timeCheck ( int tc,
Header h ) [static]
 

Definition at line 236 of file files.c.

Referenced by processPackageFiles().


Variable Documentation

int _noDirTokens
 

Definition at line 34 of file files.c.

DepMsg_t depMsgs
 

Definition at line 2059 of file files.c.

int multiLib = 0 [static]
 

Definition at line 85 of file files.c.

VFA_t verifyAttrs
 

Initial value:

 {
        { "md5",        RPMVERIFY_MD5 },
        { "size",       RPMVERIFY_FILESIZE },
        { "link",       RPMVERIFY_LINKTO },
        { "user",       RPMVERIFY_USER },
        { "group",      RPMVERIFY_GROUP },
        { "mtime",      RPMVERIFY_MTIME },
        { "mode",       RPMVERIFY_MODE },
        { "rdev",       RPMVERIFY_RDEV },
        { NULL, 0 }
}

Definition at line 264 of file files.c.

VFA_t virtualFileAttributes
 

Initial value:

 {
        { "%dir",       0 },    
        { "%doc",       RPMFILE_DOC },
        { "%ghost",     RPMFILE_GHOST },
        { "%exclude",   RPMFILE_EXCLUDE },
        { "%readme",    RPMFILE_README },
        { "%license",   RPMFILE_LICENSE },
        { "%multilib",  0 },









        { NULL, 0 }
}

Definition at line 716 of file files.c.


Generated at Thu Apr 19 15:29:45 2001 for rpm by doxygen1.2.6-20010408 written by Dimitri van Heesch, © 1997-2001