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

cpio.c File Reference

Handle cpio payloads within rpm packages. More...

#include "system.h"
#include "fsm.h"
#include "rpmerr.h"
#include "debug.h"

Go to the source code of this file.

Defines

#define GET_NUM_FIELD(phys, log)
#define SET_NUM_FIELD(phys, val, space)

Functions

static int strntoul (const char *str, char **endptr, int base, int num)
 Convert string to unsigned integer (with buffer size check).
int cpioTrailerWrite (FSM_t fsm)
 Write cpio trailer.
int cpioHeaderWrite (FSM_t fsm, struct stat *st)
 Write cpio header.
int cpioHeaderRead (FSM_t fsm, struct stat *st)
 Read cpio header.
const char *const cpioStrerror (int rc)

Variables

int _fsm_debug


Detailed Description

Handle cpio payloads within rpm packages.

Warning:
FIXME: We don't translate between cpio and system mode bits! These should both be the same, but really odd things are going to happen if that's not true!

Definition in file cpio.c.


Define Documentation

#define GET_NUM_FIELD phys,
log   ) 
 

Value:

log = strntoul(phys, &end, 16, sizeof(phys)); \
        if ( (end - phys) != sizeof(phys) ) return CPIOERR_BAD_HEADER;

Definition at line 49 of file cpio.c.

Referenced by cpioHeaderRead().

#define SET_NUM_FIELD phys,
val,
space   ) 
 

Value:

sprintf(space, "%8.8lx", (unsigned long) (val)); \
        memcpy(phys, space, 8);

Definition at line 52 of file cpio.c.

Referenced by cpioHeaderWrite().


Function Documentation

int cpioHeaderRead FSM_t  fsm,
struct stat *  st
 

Read cpio header.

< Don't depend on sizeof(struct)

Definition at line 118 of file cpio.c.

References _free(), CPIO_CRC_MAGIC, CPIO_NEWC_MAGIC, CPIOERR_BAD_HEADER, CPIOERR_BAD_MAGIC, CPIOERR_READ_FAILED, cpioCrcPhysicalHeader::devMajor, cpioCrcPhysicalHeader::devMinor, cpioCrcPhysicalHeader::filesize, FSM_DREAD, fsmStage(), GET_NUM_FIELD, cpioCrcPhysicalHeader::gid, cpioCrcPhysicalHeader::inode, cpioCrcPhysicalHeader::magic, major, makedev, minor, cpioCrcPhysicalHeader::mode, cpioCrcPhysicalHeader::mtime, cpioCrcPhysicalHeader::namesize, cpioCrcPhysicalHeader::nlink, fsm_s::path, PHYS_HDR_SIZE, cpioCrcPhysicalHeader::rdevMajor, cpioCrcPhysicalHeader::rdevMinor, fsm_s::rdnb, cpioCrcPhysicalHeader::uid, fsm_s::wrbuf, fsm_s::wrlen, fsm_s::wrsize, and xmalloc().

Referenced by fsmStage().

int cpioHeaderWrite FSM_t  fsm,
struct stat *  st
 

Write cpio header.

< Don't depend on sizeof(struct)

< Don't depend on sizeof(struct)

Definition at line 82 of file cpio.c.

References cpioCrcPhysicalHeader::checksum, CPIO_NEWC_MAGIC, CPIOERR_WRITE_FAILED, cpioCrcPhysicalHeader::devMajor, cpioCrcPhysicalHeader::devMinor, cpioCrcPhysicalHeader::filesize, FSM_DWRITE, FSM_PAD, fsmStage(), cpioCrcPhysicalHeader::gid, cpioCrcPhysicalHeader::inode, cpioCrcPhysicalHeader::magic, major, minor, cpioCrcPhysicalHeader::mode, cpioCrcPhysicalHeader::mtime, cpioCrcPhysicalHeader::namesize, cpioCrcPhysicalHeader::nlink, fsm_s::path, PHYS_HDR_SIZE, fsm_s::rdbuf, cpioCrcPhysicalHeader::rdevMajor, cpioCrcPhysicalHeader::rdevMinor, fsm_s::rdnb, SET_NUM_FIELD, cpioCrcPhysicalHeader::uid, and fsm_s::wrnb.

Referenced by fsmStage().

int cpioTrailerWrite FSM_t  fsm  ) 
 

Write cpio trailer.

< Don't depend on sizeof(struct)

< Don't depend on sizeof(struct)

< Don't depend on sizeof(struct)

Definition at line 56 of file cpio.c.

References CPIO_NEWC_MAGIC, CPIO_TRAILER, FSM_DWRITE, FSM_PAD, fsmStage(), cpioCrcPhysicalHeader::magic, cpioCrcPhysicalHeader::namesize, cpioCrcPhysicalHeader::nlink, PHYS_HDR_SIZE, fsm_s::rdbuf, and fsm_s::rdnb.

Referenced by fsmStage().

static int strntoul const char *  str,
char **  endptr,
int  base,
int  num
[static]
 

Convert string to unsigned integer (with buffer size check).

Parameters:
input string
Return values:
address of 1st character not processed
Parameters:
base numerical conversion base
num max no. of bytes to read
Returns:
converted integer

Definition at line 30 of file cpio.c.

References alloca().


Variable Documentation

int _fsm_debug
 

Definition at line 20 of file fsm.c.


Generated on Tue Oct 18 05:41:40 2005 for rpm by  doxygen 1.4.1