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

legacy.c File Reference

#include "system.h"
#include "rpmio_internal.h"
#include <rpmlib.h>
#include <rpmmacro.h>
#include "misc.h"
#include "legacy.h"
#include "debug.h"

Go to the source code of this file.

Defines

#define alloca_strdup(_s)   strcpy(alloca(strlen(_s)+1), (_s))

Functions

int open_dso (const char *path, pid_t *pidp, size_t *fsizep)
 Open a file descriptor to verify file MD5 and size.
int domd5 (const char *fn, unsigned char *digest, int asAscii, size_t *fsizep)
 Return MD5 sum and size of a file.
int dncmp (const void *a, const void *b)
void compressFilelist (Header h)
 Convert absolute path tag to (dirname,basename,dirindex) tags.
void rpmfiBuildFNames (Header h, rpmTag tagN, const char ***fnp, int *fcp)
 Retrieve file names from header.
void expandFilelist (Header h)
 Convert (dirname,basename,dirindex) tags to absolute path tag.
void providePackageNVR (Header h)
 Retrofit a Provides: name = version-release dependency into legacy package headers.
void legacyRetrofit (Header h, const struct rpmlead *lead)
 Do all necessary retorfits for a package header.

Variables

int _noDirTokens = 0


Detailed Description

Definition in file legacy.c.


Define Documentation

#define alloca_strdup _s   )     strcpy(alloca(strlen(_s)+1), (_s))
 

Definition at line 27 of file legacy.c.


Function Documentation

void compressFilelist Header  h  ) 
 

Convert absolute path tag to (dirname,basename,dirindex) tags.

Parameters:
h header

Definition at line 300 of file legacy.c.

References alloca(), dncmp(), HAE_t, Header, headerIsEntry(), HFD_t, HGE_t, HRE_t, int_32, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_OLDFILENAMES, and rpmTagType.

Referenced by genCpioListAndHeader(), hdrCompressFilelist(), hdrLoad(), legacyRetrofit(), mungeFilelist(), and rpmReadHeaders().

int dncmp const void *  a,
const void *  b
[static]
 

Definition at line 290 of file legacy.c.

Referenced by compressFilelist().

int domd5 const char *  fn,
unsigned char *  digest,
int  asAscii,
size_t *  fsizep
 

Return MD5 sum and size of a file.

Parameters:
fn file name
Return values:
digest address of md5sum
Parameters:
asAscii return md5sum as ascii string?
Return values:
*fsizep file size pointer (or NULL)
Returns:
0 on success, 1 on error

Definition at line 180 of file legacy.c.

References _free(), DIGEST_CTX, Fclose(), FD_t, fdDup(), fdFiniDigest(), fdInitDigest(), Ferror(), Fopen(), Fread(), open_dso(), PGPHASHALGO_MD5, RPMDIGEST_NONE, rpmDigestFinal(), rpmDigestInit(), rpmDigestUpdate(), URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), and urltype.

Referenced by genCpioListAndHeader(), handleOverlappedFiles(), rpmAddSignature(), rpmfiDecideFate(), and rpmVerifyFile().

void expandFilelist Header  h  ) 
 

Convert (dirname,basename,dirindex) tags to absolute path tag.

Parameters:
h header

Definition at line 451 of file legacy.c.

References _free(), HAE_t, Header, headerIsEntry(), HRE_t, RPM_STRING_ARRAY_TYPE, rpmfiBuildFNames(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, and RPMTAG_OLDFILENAMES.

Referenced by genCpioListAndHeader(), hdrExpandFilelist(), and rpmdbAdd().

void legacyRetrofit Header  h,
const struct rpmlead lead
 

Do all necessary retorfits for a package header.

Parameters:
h header
lead 

Definition at line 560 of file legacy.c.

References alloca_strdup, compressFilelist(), Header, headerAddEntry(), headerGetEntry(), headerIsEntry(), headerRemoveEntry(), int_32, rpmlead::major, providePackageNVR(), RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMTAG_DEFAULTPREFIX, RPMTAG_FILEGIDS, RPMTAG_FILEGROUPNAME, RPMTAG_FILEUIDS, RPMTAG_FILEUSERNAME, RPMTAG_PREFIXES, RPMTAG_SOURCEPACKAGE, stripTrailingChar(), and rpmlead::type.

Referenced by rpmReadPackageFile().

int open_dso const char *  path,
pid_t *  pidp,
size_t *  fsizep
[static]
 

Open a file descriptor to verify file MD5 and size.

Parameters:
path file path
Return values:
pidp prelink helper pid or 0
fsizep file size
Returns:
-1 on error, otherwise, an open file descriptor

Definition at line 36 of file legacy.c.

References environ, getenv(), poptParseArgvString(), rpmExpand(), snprintf(), and unsetenv().

Referenced by domd5().

void providePackageNVR Header  h  ) 
 

Retrofit a Provides: name = version-release dependency into legacy package headers.

Parameters:
h header

Definition at line 479 of file legacy.c.

References alloca(), Header, headerAddOrAppendEntry(), headerNVR(), HFD_t, HGE_t, int_32, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMSENSE_EQUAL, RPMTAG_EPOCH, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, rpmTagType, and stpcpy().

Referenced by hdrLoad(), legacyRetrofit(), packageBinaries(), rpmReadHeaders(), and writeRPM().

void rpmfiBuildFNames Header  h,
rpmTag  tagN,
const char ***  fnp,
int *  fcp
 

Retrieve file names from header.

The representation of file names in package headers changed in rpm-4.0. Originally, file names were stored as an array of absolute paths. In rpm-4.0, file names are stored as separate arrays of dirname's and basename's, * with a dirname index to associate the correct dirname with each basname.

This function is used to retrieve file names independent of how the file names are represented in the package header.

Parameters:
h header
tagN RPMTAG_BASENAMES | PMTAG_ORIGBASENAMES
Return values:
*fnp array of file names
*fcp number of files

Definition at line 392 of file legacy.c.

References _free(), Header, HFD_t, HGE_t, rpmTag, rpmTagType, stpcpy(), and xmalloc().

Referenced by expandFilelist(), filenamesTag(), fssizesTag(), mungeFilelist(), rpmHeaderGetEntry(), rpmInstallSourcePackage(), and rpmpsmStage().


Generated on Sat Nov 17 08:08:23 2007 for rpm by  doxygen 1.3.9.1