summaryrefslogtreecommitdiff
path: root/package/heirloom-cpio/src/cpio.h
diff options
context:
space:
mode:
Diffstat (limited to 'package/heirloom-cpio/src/cpio.h')
-rw-r--r--package/heirloom-cpio/src/cpio.h232
1 files changed, 232 insertions, 0 deletions
diff --git a/package/heirloom-cpio/src/cpio.h b/package/heirloom-cpio/src/cpio.h
new file mode 100644
index 000000000..131a3d388
--- /dev/null
+++ b/package/heirloom-cpio/src/cpio.h
@@ -0,0 +1,232 @@
+/*
+ * cpio - copy file archives in and out
+ *
+ * Gunnar Ritter, Freiburg i. Br., Germany, April 2003.
+ */
+/*
+ * Copyright (c) 2003 Gunnar Ritter
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute
+ * it freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+/* Sccsid @(#)cpio.h 1.29 (gritter) 3/26/07 */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <inttypes.h>
+
+enum {
+ FMT_NONE = 00000000, /* no format chosen yet */
+
+ TYP_PAX = 00000010, /* uses pax-like extended headers */
+ TYP_BE = 00000100, /* this binary archive is big-endian */
+ TYP_SGI = 00000200, /* SGI cpio -K flag binary archive */
+ TYP_SCO = 00000200, /* SCO UnixWare 7.1 extended archive */
+ TYP_CRC = 00000400, /* this has a SVR4 'crc' checksum */
+ TYP_BINARY = 00001000, /* this is a binary cpio type */
+ TYP_OCPIO = 00002000, /* this is an old cpio type */
+ TYP_NCPIO = 00004000, /* this is a SVR4 cpio type */
+ TYP_CRAY = 00010000, /* this is a Cray cpio archive */
+ TYP_CPIO = 00077000, /* this is a cpio type */
+ TYP_OTAR = 00100000, /* this is an old tar type */
+ TYP_USTAR = 00200000, /* this is a ustar type */
+ TYP_BAR = 00400000, /* this is a bar type */
+ TYP_TAR = 00700000, /* this is a tar type */
+
+ FMT_ODC = 00002001, /* POSIX ASCII cpio format */
+ FMT_DEC = 00002002, /* DEC extended cpio format */
+ FMT_BINLE = 00003001, /* binary (default) cpio format LE */
+ FMT_BINBE = 00003101, /* binary (default) cpio format BE */
+ FMT_SGILE = 00003201, /* IRIX-style -K binary format LE */
+ FMT_SGIBE = 00003301, /* IRIX-style -K binary format BE */
+ FMT_ASC = 00004001, /* SVR4 ASCII cpio format */
+ FMT_SCOASC = 00004201, /* UnixWare 7.1 ASCII cpio format */
+ FMT_CRC = 00004401, /* SVR4 ASCII cpio format w/checksum */
+ FMT_SCOCRC = 00004601, /* UnixWare 7.1 ASCII cpio w/checksum */
+ FMT_CRAY = 00010001, /* Cray cpio, UNICOS 6 and later */
+ FMT_CRAY5 = 00010002, /* Cray cpio, UNICOS 5 and earlier */
+ FMT_OTAR = 00100001, /* obsolete tar format */
+ FMT_TAR = 00200001, /* our tar format type */
+ FMT_USTAR = 00200002, /* ustar format */
+ FMT_GNUTAR = 00200003, /* GNU tar format type */
+ FMT_PAX = 00200011, /* POSIX.1-2001 pax format type */
+ FMT_SUN = 00200012, /* Sun extended tar format type */
+ FMT_BAR = 00400001, /* bar format type */
+
+ FMT_ZIP = 01000000 /* zip format */
+} fmttype;
+
+/*
+ * Zip compression method.
+ */
+enum cmethod {
+ C_STORED = 0, /* no compression */
+ C_SHRUNK = 1,
+ C_REDUCED1 = 2,
+ C_REDUCED2 = 3,
+ C_REDUCED3 = 4,
+ C_REDUCED4 = 5,
+ C_IMPLODED = 6,
+ C_TOKENIZED = 7,
+ C_DEFLATED = 8,
+ C_ENHDEFLD = 9,
+ C_DCLIMPLODED = 10,
+ C_PKRESERVED = 11,
+ C_BZIP2 = 12,
+};
+
+/*
+ * A collection of the interesting facts about a file in copy-in mode.
+ */
+struct file {
+ struct stat f_st; /* file stat */
+ long long f_rmajor; /* st_rdev major */
+ long long f_rminor; /* st_rdev minor */
+ long long f_dsize; /* display size */
+ long long f_csize; /* compressed size */
+ long long f_Kbase; /* base size for -K */
+ long long f_Krest; /* rest size for -K */
+ long long f_Ksize; /* faked -K size field */
+ char *f_name; /* file name */
+ size_t f_nsiz; /* file name size */
+ char *f_lnam; /* link name */
+ size_t f_lsiz; /* link name size */
+ uint32_t f_chksum; /* checksum */
+ int f_pad; /* padding size */
+ int f_fd; /* file descriptor (for pass mode) */
+ enum cmethod f_cmethod; /* zip compression method */
+ enum {
+ FG_CRYPT = 0001, /* encrypted zip file */
+ FG_BIT1 = 0002,
+ FG_BIT2 = 0004,
+ FG_DESC = 0010 /* zip file with data descriptor */
+ } f_gflag; /* zip general flag */
+ enum {
+ OF_ZIP64 = 0001 /* is a zip64 archive entry */
+ } f_oflag; /* other flags */
+};
+
+/*
+ * Patterns for gmatch().
+ */
+struct glist {
+ struct glist *g_nxt;
+ const char *g_pat;
+ unsigned g_gotcha : 1;
+ unsigned g_not : 1;
+ unsigned g_art : 1;
+};
+
+extern int aflag;
+extern int Aflag;
+extern int bflag;
+extern int Bflag;
+extern int cflag;
+extern int Cflag;
+extern int dflag;
+extern int Dflag;
+extern int eflag;
+extern int cray_eflag;
+extern const char *Eflag;
+extern int fflag;
+extern int Hflag;
+extern const char *Iflag;
+extern int kflag;
+extern int Kflag;
+extern int lflag;
+extern int Lflag;
+extern int mflag;
+extern const char *Mflag;
+extern const char *Oflag;
+extern int Pflag;
+extern int rflag;
+extern const char *Rflag;
+extern int sflag;
+extern int Sflag;
+extern int tflag;
+extern int uflag;
+extern int hp_Uflag;
+extern int vflag;
+extern int Vflag;
+extern int sixflag;
+extern int action;
+extern long long errcnt;
+extern int blksiz;
+extern int sysv3;
+extern int printsev;
+extern char *progname;
+extern struct glist *patterns;
+
+enum { /* type of pax command this is */
+ PAX_TYPE_CPIO = 0, /* not a pax command */
+ PAX_TYPE_PAX1992 = 1, /* POSIX.2 pax command */
+ PAX_TYPE_PAX2001 = 2 /* POSIX.1-2001 pax command */
+} pax;
+extern int pax_dflag;
+extern int pax_kflag;
+extern int pax_nflag;
+extern int pax_sflag;
+extern int pax_uflag;
+extern int pax_Xflag;
+
+enum {
+ PAX_P_NONE = 0000,
+ PAX_P_ATIME = 0001,
+ PAX_P_MTIME = 0004,
+ PAX_P_OWNER = 0010,
+ PAX_P_MODE = 0020,
+ PAX_P_EVERY = 0400
+} pax_preserve;
+
+extern size_t (*ofiles)(char **, size_t *);
+extern void (*prtime)(time_t);
+
+extern ssize_t bread(char *, size_t);
+extern void bunread(const char *, size_t);
+extern void swap(char *, size_t, int, int);
+extern void msg(int, int, const char *, ...);
+extern void emsg(int, const char *, ...);
+extern void unexeoa(void);
+extern int setfmt(char *);
+extern char *oneintfmt(const char *);
+extern int setreassign(const char *);
+extern void addg(const char *, int);
+extern void *srealloc(void *, size_t);
+extern void *smalloc(size_t);
+extern void *scalloc(size_t, size_t);
+extern void *svalloc(size_t, int);
+extern char *sstrdup(const char *);
+extern int pax_options(char *, int);
+
+extern int zipunshrink(struct file *, const char *, int, int, uint32_t *);
+extern int zipexplode(struct file *, const char *, int, int, uint32_t *);
+extern int zipexpand(struct file *, const char *, int, int, uint32_t *);
+extern int zipinflate(struct file *, const char *, int, int, uint32_t *);
+extern int zipunbz2(struct file *, const char *, int, int, uint32_t *);
+extern int zipblast(struct file *, const char *, int, int, uint32_t *);
+
+extern uint32_t zipcrc(uint32_t, const uint8_t *, size_t);
+
+extern void flags(int, char **);
+extern void usage(void);
+
+extern int pax_track(const char *, time_t);
+extern void pax_prlink(struct file *);
+extern int pax_sname(char **, size_t *);
+extern void pax_onexit(void);