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.