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

PAYLOAD.


Files

file  cpio.c
 Handle cpio payloads within rpm packages.

file  cpio.h
 Structures used to handle cpio payloads within rpm packages.

file  fsm.c
 File state machine to handle a payload from a package.

file  fsm.h
 File state machine to handle a payload within an rpm package.

file  psm.c
 Package state machine to handle a package from a transaction set.

file  psm.h
 Package state machine to handle a package from a transaction set.

file  rpmlib.h
 In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not.


Data Structures

struct  cpioCrcPhysicalHeader
struct  dnli_s
struct  fsm_s
struct  fsmIterator_s
struct  hardLink_s

RPMTS

typedef fsmIterator_sFSMI_t
typedef fsm_sFSM_t

Defines

#define CPIOERR_CHECK_ERRNO   0x00008000

Typedefs

typedef enum cpioMapFlags_e cpioMapFlags
typedef dnli_sDNLI_t

Enumerations

enum  cpioErrorReturns {
  CPIOERR_BAD_MAGIC = (2 ), CPIOERR_BAD_HEADER = (3 ), CPIOERR_OPEN_FAILED = (4 | 0x00008000 ), CPIOERR_CHMOD_FAILED = (5 | 0x00008000 ),
  CPIOERR_CHOWN_FAILED = (6 | 0x00008000 ), CPIOERR_WRITE_FAILED = (7 | 0x00008000 ), CPIOERR_UTIME_FAILED = (8 | 0x00008000 ), CPIOERR_UNLINK_FAILED = (9 | 0x00008000 ),
  CPIOERR_RENAME_FAILED = (10 | 0x00008000 ), CPIOERR_SYMLINK_FAILED = (11 | 0x00008000 ), CPIOERR_STAT_FAILED = (12 | 0x00008000 ), CPIOERR_LSTAT_FAILED = (13 | 0x00008000 ),
  CPIOERR_MKDIR_FAILED = (14 | 0x00008000 ), CPIOERR_RMDIR_FAILED = (15 | 0x00008000 ), CPIOERR_MKNOD_FAILED = (16 | 0x00008000 ), CPIOERR_MKFIFO_FAILED = (17 | 0x00008000 ),
  CPIOERR_LINK_FAILED = (18 | 0x00008000 ), CPIOERR_READLINK_FAILED = (19 | 0x00008000 ), CPIOERR_READ_FAILED = (20 | 0x00008000 ), CPIOERR_COPY_FAILED = (21 | 0x00008000 ),
  CPIOERR_HDR_SIZE = (22 ), CPIOERR_HDR_TRAILER = (23 ), CPIOERR_UNKNOWN_FILETYPE = (24 ), CPIOERR_MISSING_HARDLINK = (25 ),
  CPIOERR_MD5SUM_MISMATCH = (26 ), CPIOERR_INTERNAL = (27 ), CPIOERR_UNMAPPED_FILE = (28 ), CPIOERR_ENOENT = (29 ),
  CPIOERR_ENOTEMPTY = (30 )
}
enum  cpioMapFlags_e {
  CPIO_MAP_PATH = (1 << 0), CPIO_MAP_MODE = (1 << 1), CPIO_MAP_UID = (1 << 2), CPIO_MAP_GID = (1 << 3),
  CPIO_FOLLOW_SYMLINKS = (1 << 4), CPIO_MAP_ABSOLUTE = (1 << 5), CPIO_MAP_ADDDOT = (1 << 6), CPIO_ALL_HARDLINKS = (1 << 7),
  CPIO_MAP_TYPE = (1 << 8)
}

Functions

const char *const cpioStrerror (int rc)
const char * fsmFsPath (const FSM_t fsm, const struct stat *st, const char *subdir, const char *suffix)
void * mapFreeIterator (void *p)
void * mapInitIterator (rpmts ts, rpmfi fi)
int mapNextIterator (void *a)
int cpioStrCmp (const void *a, const void *b)
int mapFind (FSMI_t iter, const char *fsmPath)
void * dnlFreeIterator (const void *a)
int dnlCount (const DNLI_t dnli)
int dnlIndex (const DNLI_t dnli)
void * dnlInitIterator (const FSM_t fsm, int reverse)
const char * dnlNextIterator (DNLI_t dnli)
int saveHardLink (FSM_t fsm)
void * freeHardLink (struct hardLink_s *li)
int expandRegular (FSM_t fsm)
int writeFile (FSM_t fsm, int writeData)
int writeLinkedFile (FSM_t fsm)
int fsmMakeLinks (FSM_t fsm)
int fsmCommitLinks (FSM_t fsm)

Define Documentation

#define CPIOERR_CHECK_ERRNO   0x00008000
 

Note:
CPIO_CHECK_ERRNO bit is set only if errno is valid.

Definition at line 18 of file cpio.h.

Referenced by cpioStrerror().


Typedef Documentation

typedef enum cpioMapFlags_e cpioMapFlags
 

typedef struct dnli_s * DNLI_t
 

Directory name iterator.

typedef struct fsm_s* FSM_t
 

File state machine data.

Definition at line 841 of file rpmlib.h.

typedef struct fsmIterator_s* FSMI_t
 

Iterator across package file info, forward on install, backward on erase.

Definition at line 836 of file rpmlib.h.


Enumeration Type Documentation

enum cpioErrorReturns
 

Enumeration values:
CPIOERR_BAD_MAGIC 
CPIOERR_BAD_HEADER 
CPIOERR_OPEN_FAILED 
CPIOERR_CHMOD_FAILED 
CPIOERR_CHOWN_FAILED 
CPIOERR_WRITE_FAILED 
CPIOERR_UTIME_FAILED 
CPIOERR_UNLINK_FAILED 
CPIOERR_RENAME_FAILED 
CPIOERR_SYMLINK_FAILED 
CPIOERR_STAT_FAILED 
CPIOERR_LSTAT_FAILED 
CPIOERR_MKDIR_FAILED 
CPIOERR_RMDIR_FAILED 
CPIOERR_MKNOD_FAILED 
CPIOERR_MKFIFO_FAILED 
CPIOERR_LINK_FAILED 
CPIOERR_READLINK_FAILED 
CPIOERR_READ_FAILED 
CPIOERR_COPY_FAILED 
CPIOERR_HDR_SIZE 
CPIOERR_HDR_TRAILER 
CPIOERR_UNKNOWN_FILETYPE 
CPIOERR_MISSING_HARDLINK 
CPIOERR_MD5SUM_MISMATCH 
CPIOERR_INTERNAL 
CPIOERR_UNMAPPED_FILE 
CPIOERR_ENOENT 
CPIOERR_ENOTEMPTY 

Definition at line 22 of file cpio.h.

enum cpioMapFlags_e
 

Enumeration values:
CPIO_MAP_PATH 
CPIO_MAP_MODE 
CPIO_MAP_UID 
CPIO_MAP_GID 
CPIO_FOLLOW_SYMLINKS  only for building.
CPIO_MAP_ABSOLUTE 
CPIO_MAP_ADDDOT 
CPIO_ALL_HARDLINKS  fail if hardlinks are missing.
CPIO_MAP_TYPE  only for building.

Definition at line 57 of file cpio.h.


Function Documentation

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

Definition at line 161 of file fsm.c.

Referenced by mapFind().

const char* const cpioStrerror int    rc
 

Return formatted error message on payload handling failure.

Parameters:
rc  error code
Returns:
formatted error string

Definition at line 196 of file cpio.c.

References _, CPIOERR_BAD_HEADER, CPIOERR_BAD_MAGIC, CPIOERR_CHECK_ERRNO, CPIOERR_CHMOD_FAILED, CPIOERR_CHOWN_FAILED, CPIOERR_COPY_FAILED, CPIOERR_HDR_SIZE, CPIOERR_INTERNAL, CPIOERR_LINK_FAILED, CPIOERR_LSTAT_FAILED, CPIOERR_MD5SUM_MISMATCH, CPIOERR_MISSING_HARDLINK, CPIOERR_MKDIR_FAILED, CPIOERR_MKFIFO_FAILED, CPIOERR_MKNOD_FAILED, CPIOERR_OPEN_FAILED, CPIOERR_READ_FAILED, CPIOERR_READLINK_FAILED, CPIOERR_RENAME_FAILED, CPIOERR_RMDIR_FAILED, CPIOERR_STAT_FAILED, CPIOERR_SYMLINK_FAILED, CPIOERR_UNKNOWN_FILETYPE, CPIOERR_UNLINK_FAILED, CPIOERR_UNMAPPED_FILE, CPIOERR_UTIME_FAILED, CPIOERR_WRITE_FAILED, errno, and strerror().

Referenced by cpio_doio().

int dnlCount const DNLI_t    dnli [inline, static]
 

Definition at line 246 of file fsm.c.

References dnli_s::fi.

Referenced by fsmMkdirs(), and fsmRmdirs().

void* dnlFreeIterator const void *    a [static]
 

Destroy directory name iterator.

Parameters:
a  directory name iterator
Return values:
NULL  always

Definition at line 234 of file fsm.c.

References _free(), and dnli_s::active.

Referenced by fsmMkdirs(), and fsmRmdirs().

int dnlIndex const DNLI_t    dnli [inline, static]
 

Definition at line 254 of file fsm.c.

References dnli_s::isave.

Referenced by fsmMkdirs(), and fsmRmdirs().

void* dnlInitIterator const FSM_t    fsm,
int    reverse
[static]
 

Create directory name iterator.

Parameters:
fsm  file state machine data
reverse  traverse directory names in reverse order?
Returns:
directory name iterator

Definition at line 268 of file fsm.c.

References _, dnli_s::active, dnli_s::fi, fsmGetFi(), dnli_s::i, dnli_s::reverse, rpmfi, RPMMESS_DEBUG, rpmMessage, xcalloc(), and XFA_SKIPPING.

Referenced by fsmMkdirs(), and fsmRmdirs().

const char* dnlNextIterator DNLI_t    dnli [static]
 

Return next directory name (from file info).

Parameters:
dnli  directory name iterator
Returns:
next directory name

Definition at line 357 of file fsm.c.

References dnli_s::active, dnli_s::fi, dnli_s::i, dnli_s::isave, dnli_s::reverse, and rpmfi.

Referenced by fsmMkdirs(), and fsmRmdirs().

int expandRegular FSM_t    fsm [static]
 

Create file from payload stream.

Parameters:
fsm  file state machine data
Returns:
0 on success

Definition at line 743 of file fsm.c.

References _free(), CPIOERR_MD5SUM_MISMATCH, fdFiniDigest(), fdInitDigest(), Fflush(), fsm_s::fmd5sum, FSM_DREAD, FSM_NOTIFY, FSM_WCLOSE, FSM_WOPEN, FSM_WRITE, fsmStage(), fsm_s::md5sum, PGPHASHALGO_MD5, fsm_s::sb, fsm_s::wfd, fsm_s::wrlen, fsm_s::wrnb, and fsm_s::wrsize.

Referenced by fsmStage().

void* freeHardLink struct hardLink_s   li [static]
 

Destroy set of hard links.

Parameters:
li  set of hard links
Returns:
NULL always

Definition at line 482 of file fsm.c.

References _free(), hardLink_s::filex, and hardLink_s::nsuffix.

Referenced by freeFSM(), and fsmStage().

int fsmCommitLinks FSM_t    fsm [static]
 

Commit hard linked file set atomically.

Parameters:
fsm  file state machine data
Returns:
0 on success

Definition at line 1062 of file fsm.c.

References _free(), fsm_s::action, hardLink_s::filex, FSM_COMMIT, FSM_MAP, fsmStage(), fsm_s::ix, fsm_s::li, fsm_s::links, hardLink_s::next, hardLink_s::nlink, fsm_s::nsuffix, fsm_s::path, hardLink_s::sb, fsm_s::sb, and XFA_SKIPPING.

Referenced by fsmStage().

const char* fsmFsPath const FSM_t    fsm,
const struct stat *    st,
const char *    subdir,
const char *    suffix
[static]
 

Build path to file from file info, ornamented with subdir and suffix.

Parameters:
fsm  file state machine data
st  file stat info
subdir  subdir to use (NULL disables)
suffix  suffix to use (NULL disables)
Return values:
path  to file

Definition at line 68 of file fsm.c.

References fsm_s::baseName, fsm_s::dirName, stpcpy(), and xmalloc().

Referenced by fsmMapPath(), and fsmStage().

int fsmMakeLinks FSM_t    fsm [static]
 

Create pending hard links to existing file.

Parameters:
fsm  file state machine data
Returns:
0 on success

Definition at line 998 of file fsm.c.

References _free(), fsm_s::action, CPIOERR_LSTAT_FAILED, hardLink_s::createdPath, fsm_s::failedFile, hardLink_s::filex, FSM_LINK, FSM_MAP, FSM_VERIFY, fsmStage(), fsm_s::ix, fsm_s::li, hardLink_s::linksLeft, hardLink_s::nlink, fsm_s::nsuffix, fsm_s::opath, fsm_s::path, XFA_SKIPPING, and xstrdup().

Referenced by fsmStage().

int mapFind FSMI_t    iter,
const char *    fsmPath
[static]
 

Locate archive path in file info.

Parameters:
iter  file info iterator
fsmPath  archive path
Returns:
index into file info, -1 if archive path was not found

Definition at line 192 of file fsm.c.

References cpioStrCmp(), fsmIterator_s::fi, fsmIterator_s::i, mapNextIterator(), and rpmfi.

Referenced by fsmStage().

void* mapFreeIterator void *    p [static]
 

Destroy file info iterator.

Parameters:
p  file info iterator
Return values:
NULL  always

Definition at line 102 of file fsm.c.

References _free(), fsmIterator_s::fi, rpmfiUnlink, rpmtsFree(), and fsmIterator_s::ts.

Referenced by freeFSM(), and fsmTeardown().

void* mapInitIterator rpmts    ts,
rpmfi    fi
[static]
 

Create file info iterator.

Parameters:
ts  transaction set
fi  transaction element file info
Returns:
file info iterator

Definition at line 121 of file fsm.c.

References FA_COPYOUT, fsmIterator_s::fi, fsmIterator_s::i, fsmIterator_s::isave, fsmIterator_s::reverse, rpmfi, rpmfiLink, rpmteType(), rpmts, rpmtsLink, TR_REMOVED, fsmIterator_s::ts, and xcalloc().

Referenced by fsmSetup().

int mapNextIterator void *    a [static]
 

Return next index into file info.

Parameters:
a  file info iterator
Returns:
next index, -1 on termination

Definition at line 140 of file fsm.c.

References fsmIterator_s::fi, fsmIterator_s::i, fsmIterator_s::isave, fsmIterator_s::reverse, and rpmfi.

Referenced by fsmStage(), and mapFind().

int saveHardLink FSM_t    fsm [static]
 

Save hard link in chain.

Parameters:
fsm  file state machine data
Returns:
Is chain only partially filled?

Definition at line 387 of file fsm.c.

References _free(), hardLink_s::createdPath, hardLink_s::filex, FSM_MAP, FSM_PKGBUILD, FSM_PKGINSTALL, fsmGetFi(), fsmStage(), fsm_s::goal, fsm_s::ix, fsm_s::li, hardLink_s::linkIndex, fsm_s::links, hardLink_s::linksLeft, hardLink_s::next, hardLink_s::nlink, fsm_s::nsuffix, hardLink_s::nsuffix, fsm_s::path, rpmfi, hardLink_s::sb, fsm_s::sb, xcalloc(), and XFA_SKIPPING.

Referenced by fsmStage().

int writeFile FSM_t    fsm,
int    writeData
[static]
 

Write next item to payload stream.

Parameters:
fsm  file state machine data
writeData  should data be written?
Returns:
0 on success

Definition at line 810 of file fsm.c.

References alloca(), alloca_strdup, fsm_s::baseName, CPIO_MAP_ABSOLUTE, CPIO_MAP_ADDDOT, CPIO_MAP_PATH, fsm_s::dirName, FSM_DWRITE, FSM_HWRITE, FSM_PAD, FSM_RCLOSE, FSM_READ, FSM_READLINK, FSM_ROPEN, fsmGetFi(), fsmStage(), fsm_s::ix, fsm_s::mapFlags, fsm_s::opath, fsm_s::osb, fsm_s::path, fsm_s::rdbuf, fsm_s::rdlen, fsm_s::rdnb, fsm_s::rdsize, fsm_s::rfd, rpmfi, S_ISLNK, fsm_s::sb, stpcpy(), and fsm_s::wrnb.

Referenced by fsmStage(), and writeLinkedFile().

int writeLinkedFile FSM_t    fsm [static]
 

Write set of linked files to payload stream.

Parameters:
fsm  file state machine data
Returns:
0 on success

Definition at line 950 of file fsm.c.

References _free(), fsm_s::failedFile, hardLink_s::filex, FSM_MAP, fsmStage(), fsm_s::ix, fsm_s::li, hardLink_s::nlink, fsm_s::nsuffix, fsm_s::path, writeFile(), and xstrdup().

Referenced by fsmStage().


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