2017-12-01 17:17:24 +08:00
|
|
|
#ifndef _CPIO_H_
|
|
|
|
#define _CPIO_H_
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#include "vector.h"
|
|
|
|
|
|
|
|
typedef struct cpio_entry {
|
|
|
|
// uint32_t ino;
|
|
|
|
uint32_t mode;
|
|
|
|
uint32_t uid;
|
|
|
|
uint32_t gid;
|
|
|
|
// uint32_t nlink;
|
|
|
|
// uint32_t mtime;
|
|
|
|
uint32_t filesize;
|
|
|
|
// uint32_t devmajor;
|
|
|
|
// uint32_t devminor;
|
|
|
|
// uint32_t rdevmajor;
|
|
|
|
// uint32_t rdevminor;
|
2017-12-04 03:14:04 +08:00
|
|
|
// uint32_t namesize;
|
2017-12-01 17:17:24 +08:00
|
|
|
// uint32_t check;
|
|
|
|
char *filename;
|
2017-12-07 03:21:13 +08:00
|
|
|
void *data;
|
2017-12-01 17:17:24 +08:00
|
|
|
int remove;
|
|
|
|
} cpio_entry;
|
|
|
|
|
|
|
|
typedef struct cpio_newc_header {
|
|
|
|
char magic[6];
|
|
|
|
char ino[8];
|
|
|
|
char mode[8];
|
|
|
|
char uid[8];
|
|
|
|
char gid[8];
|
|
|
|
char nlink[8];
|
|
|
|
char mtime[8];
|
|
|
|
char filesize[8];
|
|
|
|
char devmajor[8];
|
|
|
|
char devminor[8];
|
|
|
|
char rdevmajor[8];
|
|
|
|
char rdevminor[8];
|
|
|
|
char namesize[8];
|
|
|
|
char check[8];
|
|
|
|
} cpio_newc_header;
|
|
|
|
|
2017-12-04 03:14:04 +08:00
|
|
|
// Basic cpio functions
|
2017-12-21 03:36:18 +08:00
|
|
|
void cpio_free(cpio_entry *e);
|
|
|
|
int cpio_find(struct vector *v, const char *entry);
|
2017-12-07 01:30:48 +08:00
|
|
|
int cpio_cmp(const void *a, const void *b);
|
2017-12-04 03:14:04 +08:00
|
|
|
void parse_cpio(struct vector *v, const char *filename);
|
|
|
|
void dump_cpio(struct vector *v, const char *filename);
|
2017-12-07 01:30:48 +08:00
|
|
|
void cpio_vec_insert(struct vector *v, cpio_entry *n);
|
2017-12-01 17:17:24 +08:00
|
|
|
void cpio_vec_destroy(struct vector *v);
|
2017-12-04 03:14:04 +08:00
|
|
|
void cpio_rm(struct vector *v, int recursive, const char *entry);
|
|
|
|
void cpio_mkdir(struct vector *v, mode_t mode, const char *entry);
|
2017-12-04 03:22:26 +08:00
|
|
|
void cpio_ln(struct vector *v, const char *target, const char *entry);
|
2017-12-04 03:14:04 +08:00
|
|
|
void cpio_add(struct vector *v, mode_t mode, const char *entry, const char *filename);
|
|
|
|
int cpio_mv(struct vector *v, const char *from, const char *to);
|
|
|
|
int cpio_extract(struct vector *v, const char *entry, const char *filename);
|
2017-12-05 03:32:37 +08:00
|
|
|
void cpio_extract_all(struct vector *v);
|
2017-12-04 03:14:04 +08:00
|
|
|
|
2017-12-01 17:17:24 +08:00
|
|
|
#endif
|