lib/misc.c File Reference

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

Go to the source code of this file.

Functions

char ** splitString (const char *str, int length, char sep)
 Split string into fields separated by a character.
void freeSplitString (char **list)
 Free split string argv array.
int doputenv (const char *str)
 Like the libc function, but malloc()'s the space needed.
int dosetenv (const char *name, const char *value, int overwrite)
 Like the libc function, but malloc()'s the space needed.
static int rpmMkpath (const char *path, mode_t mode, uid_t uid, gid_t gid)
int makeTempFile (const char *prefix, const char **fnptr, FD_t *fdptr)
 Return file handle for a temporaray file.
char * currentDirectory (void)
 Return (malloc'd) current working directory.
static int dncmp (const void *a, const void *b)
void compressFilelist (Header h)
 Convert absolute path tag to (dirname,basename,dirindex) tags.
static void doBuildFileList (Header h, const char ***fileListPtr, int *fileCountPtr, rpmTag baseNameTag, rpmTag dirNameTag, rpmTag dirIndexesTag)
void expandFilelist (Header h)
 Convert (dirname,basename,dirindex) tags to absolute path tag.
void rpmBuildFileList (Header h, const char ***fileListPtr, int *fileCountPtr)
 Retrieve file names from header.
void buildOrigFileList (Header h, const char ***fileListPtr, int *fileCountPtr)
int myGlobPatternP (const char *patternURL)
static int glob_error (const char *foo, int bar)
int rpmGlob (const char *patterns, int *argcPtr, const char ***argvPtr)
int rpmHeaderGetEntry (Header h, int_32 tag, int_32 *type, void **p, int_32 *c)
 Retrieve tag info from header.
int rpmPackageGetEntry (void *leadp, Header sigs, Header h, int_32 tag, int_32 *type, void **p, int_32 *c)
 Retrieve tag info from header.
void providePackageNVR (Header h)
 Retrofit a Provides: name = version-release dependency into legacy packages.
int domd5 (const char *fn, unsigned char *digest, int asAscii)
 Calculate MD5 sum for file.

Variables

static int _debug = 0
const char * RPMVERSION = VERSION
int _noDirTokens = 0
 Should version 3 packages be produced?

Detailed Description

Definition in file misc.c.


Function Documentation

void buildOrigFileList ( Header  h,
const char ***  fileListPtr,
int *  fileCountPtr 
)
Parameters:
h header

Definition at line 465 of file misc.c.

void compressFilelist ( Header  h  ) 

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

Parameters:
h header

Definition at line 298 of file misc.c.

char* currentDirectory ( void   ) 

Return (malloc'd) current working directory.

Returns:
current working directory (malloc'ed)

Definition at line 274 of file misc.c.

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

Definition at line 291 of file misc.c.

static void doBuildFileList ( Header  h,
const char ***  fileListPtr,
int *  fileCountPtr,
rpmTag  baseNameTag,
rpmTag  dirNameTag,
rpmTag  dirIndexesTag 
) [static]

Definition at line 389 of file misc.c.

int domd5 ( const char *  fn,
unsigned char *  digest,
int  asAscii 
)

Calculate MD5 sum for file.

Todo:
Eliminate, use beecrypt instead.
Parameters:
fn file name
Return values:
digest address of md5sum
Parameters:
asAscii return md5sum as ascii string?
Returns:
0 on success, 1 on error

Definition at line 791 of file misc.c.

int doputenv ( const char *  str  ) 

Like the libc function, but malloc()'s the space needed.

Parameters:
str "name=value" string
Returns:
0 on success

Definition at line 98 of file misc.c.

int dosetenv ( const char *  name,
const char *  value,
int  overwrite 
)

Like the libc function, but malloc()'s the space needed.

Parameters:
name variable name
value variable value
overwrte should an existing variable be changed?
Returns:
0 on success

Definition at line 108 of file misc.c.

void expandFilelist ( Header  h  ) 

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

Parameters:
h header

Definition at line 436 of file misc.c.

void freeSplitString ( char **  list  ) 

Free split string argv array.

Parameters:
list argv array

Definition at line 59 of file misc.c.

static int glob_error ( const char *  foo,
int  bar 
) [static]

Definition at line 503 of file misc.c.

int makeTempFile ( const char *  prefix,
const char **  fnptr,
FD_t fdptr 
)

Return file handle for a temporaray file.

A unique temporaray file path will be generated using rpmGenPath(prefix, "%{_tmppath}/", "rpm-tmp.XXXXX") where "XXXXXX" is filled in using rand(3). The file is opened, and the link count and (dev,ino) location are verified after opening. The file name and the open file handle are returned.

Parameters:
prefix leading part of temp file path
Return values:
fnptr temp file name (or NULL)
fdptr temp file handle
Returns:
0 on success

Definition at line 170 of file misc.c.

int myGlobPatternP ( const char *  patternURL  ) 

Definition at line 476 of file misc.c.

void providePackageNVR ( Header  h  ) 

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

Parameters:
h header

Definition at line 712 of file misc.c.

void rpmBuildFileList ( Header  h,
const char ***  fileListPtr,
int *  fileCountPtr 
)

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 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
Return values:
fileListPtr address of array of file names
fileCountPtr address of number of files

Definition at line 459 of file misc.c.

int rpmGlob ( const char *  patterns,
int *  argcPtr,
const char ***  argvPtr 
)

Definition at line 508 of file misc.c.

int rpmHeaderGetEntry ( Header  h,
int_32  tag,
int_32 type,
void **  p,
int_32 c 
)

Retrieve tag info from header.

This is a "dressed" entry to headerGetEntry to do: 1) DIRNAME/BASENAME/DIRINDICES -> FILENAMES tag conversions. 2) i18n lookaside (if enabled).

Parameters:
h header
tag tag
Return values:
type address of tag value data type
p address of pointer to tag value(s)
c address of number of values
Returns:
0 on success, 1 on bad magic, 2 on error

Definition at line 627 of file misc.c.

static int rpmMkpath ( const char *  path,
mode_t  mode,
uid_t  uid,
gid_t  gid 
) [static]

Definition at line 120 of file misc.c.

int rpmPackageGetEntry ( void *  leadp,
Header  sigs,
Header  h,
int_32  tag,
int_32 type,
void **  p,
int_32 c 
)

Retrieve tag info from header.

Yet Another "dressed" entry to headerGetEntry in order to unify signature/header tag retrieval.

Deprecated:
Signature tags are now duplicated into header when installed.
Todo:
Eliminate from API.
Parameters:
leadp rpm lead
h header
sigs signatures
tag tag
Return values:
type address of tag value data type
p address of pointer to tag value(s)
c address of number of values
Returns:
0 on success, 1 on bad magic, 2 on error

Definition at line 678 of file misc.c.

char** splitString ( const char *  str,
int  length,
char  sep 
)

Split string into fields separated by a character.

Parameters:
str string
length length of string
sep separator character
Returns:
(malloc'd) argv array

Definition at line 23 of file misc.c.


Variable Documentation

int _debug = 0 [static]

Definition at line 7 of file misc.c.

const char* RPMVERSION = VERSION

Definition at line 10 of file misc.c.

Generated on Fri Feb 26 00:45:16 2010 for rpm by  doxygen 1.6.3