From acd7dc43632c921003b795f25876e98996fc7bf4 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 25 Dec 2016 10:32:21 +0100 Subject: fix old kernel build with newer perl --- package/heirloom-cpio/Makefile | 32 - package/heirloom-cpio/src/Makefile | 28 - package/heirloom-cpio/src/_alloca.h | 27 - package/heirloom-cpio/src/_malloc.h | 26 - package/heirloom-cpio/src/_utmpx.h | 89 - package/heirloom-cpio/src/asciitype.c | 59 - package/heirloom-cpio/src/asciitype.h | 60 - package/heirloom-cpio/src/atoll.h | 8 - package/heirloom-cpio/src/blank.h | 38 - package/heirloom-cpio/src/blast.c | 449 -- package/heirloom-cpio/src/blast.h | 76 - package/heirloom-cpio/src/cpio.1 | 943 --- package/heirloom-cpio/src/cpio.c | 7172 -------------------- package/heirloom-cpio/src/cpio.h | 232 - package/heirloom-cpio/src/crc32.c | 115 - package/heirloom-cpio/src/expand.c | 193 - package/heirloom-cpio/src/explode.c | 1138 ---- package/heirloom-cpio/src/flags.c | 257 - package/heirloom-cpio/src/getdir.c | 197 - package/heirloom-cpio/src/getdir.h | 33 - package/heirloom-cpio/src/getopt.c | 141 - package/heirloom-cpio/src/gmatch.c | 136 - package/heirloom-cpio/src/ib_alloc.c | 60 - package/heirloom-cpio/src/ib_close.c | 36 - package/heirloom-cpio/src/ib_free.c | 33 - package/heirloom-cpio/src/ib_getlin.c | 78 - package/heirloom-cpio/src/ib_getw.c | 81 - package/heirloom-cpio/src/ib_open.c | 48 - package/heirloom-cpio/src/ib_popen.c | 87 - package/heirloom-cpio/src/ib_read.c | 51 - package/heirloom-cpio/src/ib_seek.c | 53 - package/heirloom-cpio/src/iblok.h | 135 - package/heirloom-cpio/src/inflate.c | 991 --- package/heirloom-cpio/src/mbtowi.h | 22 - package/heirloom-cpio/src/memalign.c | 51 - package/heirloom-cpio/src/memalign.h | 35 - package/heirloom-cpio/src/msgselect.h | 30 - package/heirloom-cpio/src/nonpax.c | 55 - package/heirloom-cpio/src/oblok.c | 260 - package/heirloom-cpio/src/oblok.h | 96 - package/heirloom-cpio/src/pathconf.c | 51 - package/heirloom-cpio/src/pathconf.h | 29 - package/heirloom-cpio/src/pax.1 | 919 --- package/heirloom-cpio/src/pax.c | 757 --- package/heirloom-cpio/src/pfmt.c | 39 - package/heirloom-cpio/src/pfmt.h | 46 - package/heirloom-cpio/src/pfmt_label.c | 1 - package/heirloom-cpio/src/regexp.h | 1211 ---- package/heirloom-cpio/src/regexpr.c | 90 - package/heirloom-cpio/src/regexpr.h | 53 - package/heirloom-cpio/src/setlabel.c | 40 - package/heirloom-cpio/src/setuxlabel.c | 47 - package/heirloom-cpio/src/sfile.c | 99 - package/heirloom-cpio/src/sfile.h | 40 - package/heirloom-cpio/src/sighold.c | 42 - package/heirloom-cpio/src/sigignore.c | 45 - package/heirloom-cpio/src/signal.c | 46 - package/heirloom-cpio/src/sigpause.c | 48 - package/heirloom-cpio/src/sigrelse.c | 42 - package/heirloom-cpio/src/sigset.c | 57 - package/heirloom-cpio/src/sigset.h | 40 - package/heirloom-cpio/src/strtol.c | 117 - package/heirloom-cpio/src/unshrink.c | 307 - package/heirloom-cpio/src/unzip.h | 121 - package/heirloom-cpio/src/utmpx.c | 252 - package/heirloom-cpio/src/version.c | 26 - package/heirloom-cpio/src/vpfmt.c | 90 - .../perl-fix.patch | 12 + 68 files changed, 12 insertions(+), 18306 deletions(-) delete mode 100644 package/heirloom-cpio/Makefile delete mode 100644 package/heirloom-cpio/src/Makefile delete mode 100644 package/heirloom-cpio/src/_alloca.h delete mode 100644 package/heirloom-cpio/src/_malloc.h delete mode 100644 package/heirloom-cpio/src/_utmpx.h delete mode 100644 package/heirloom-cpio/src/asciitype.c delete mode 100644 package/heirloom-cpio/src/asciitype.h delete mode 100644 package/heirloom-cpio/src/atoll.h delete mode 100644 package/heirloom-cpio/src/blank.h delete mode 100644 package/heirloom-cpio/src/blast.c delete mode 100644 package/heirloom-cpio/src/blast.h delete mode 100644 package/heirloom-cpio/src/cpio.1 delete mode 100644 package/heirloom-cpio/src/cpio.c delete mode 100644 package/heirloom-cpio/src/cpio.h delete mode 100644 package/heirloom-cpio/src/crc32.c delete mode 100644 package/heirloom-cpio/src/expand.c delete mode 100644 package/heirloom-cpio/src/explode.c delete mode 100644 package/heirloom-cpio/src/flags.c delete mode 100644 package/heirloom-cpio/src/getdir.c delete mode 100644 package/heirloom-cpio/src/getdir.h delete mode 100644 package/heirloom-cpio/src/getopt.c delete mode 100644 package/heirloom-cpio/src/gmatch.c delete mode 100644 package/heirloom-cpio/src/ib_alloc.c delete mode 100644 package/heirloom-cpio/src/ib_close.c delete mode 100644 package/heirloom-cpio/src/ib_free.c delete mode 100644 package/heirloom-cpio/src/ib_getlin.c delete mode 100644 package/heirloom-cpio/src/ib_getw.c delete mode 100644 package/heirloom-cpio/src/ib_open.c delete mode 100644 package/heirloom-cpio/src/ib_popen.c delete mode 100644 package/heirloom-cpio/src/ib_read.c delete mode 100644 package/heirloom-cpio/src/ib_seek.c delete mode 100644 package/heirloom-cpio/src/iblok.h delete mode 100644 package/heirloom-cpio/src/inflate.c delete mode 100644 package/heirloom-cpio/src/mbtowi.h delete mode 100644 package/heirloom-cpio/src/memalign.c delete mode 100644 package/heirloom-cpio/src/memalign.h delete mode 100644 package/heirloom-cpio/src/msgselect.h delete mode 100644 package/heirloom-cpio/src/nonpax.c delete mode 100644 package/heirloom-cpio/src/oblok.c delete mode 100644 package/heirloom-cpio/src/oblok.h delete mode 100644 package/heirloom-cpio/src/pathconf.c delete mode 100644 package/heirloom-cpio/src/pathconf.h delete mode 100644 package/heirloom-cpio/src/pax.1 delete mode 100644 package/heirloom-cpio/src/pax.c delete mode 100644 package/heirloom-cpio/src/pfmt.c delete mode 100644 package/heirloom-cpio/src/pfmt.h delete mode 100644 package/heirloom-cpio/src/pfmt_label.c delete mode 100644 package/heirloom-cpio/src/regexp.h delete mode 100644 package/heirloom-cpio/src/regexpr.c delete mode 100644 package/heirloom-cpio/src/regexpr.h delete mode 100644 package/heirloom-cpio/src/setlabel.c delete mode 100644 package/heirloom-cpio/src/setuxlabel.c delete mode 100644 package/heirloom-cpio/src/sfile.c delete mode 100644 package/heirloom-cpio/src/sfile.h delete mode 100644 package/heirloom-cpio/src/sighold.c delete mode 100644 package/heirloom-cpio/src/sigignore.c delete mode 100644 package/heirloom-cpio/src/signal.c delete mode 100644 package/heirloom-cpio/src/sigpause.c delete mode 100644 package/heirloom-cpio/src/sigrelse.c delete mode 100644 package/heirloom-cpio/src/sigset.c delete mode 100644 package/heirloom-cpio/src/sigset.h delete mode 100644 package/heirloom-cpio/src/strtol.c delete mode 100644 package/heirloom-cpio/src/unshrink.c delete mode 100644 package/heirloom-cpio/src/unzip.h delete mode 100644 package/heirloom-cpio/src/utmpx.c delete mode 100644 package/heirloom-cpio/src/version.c delete mode 100644 package/heirloom-cpio/src/vpfmt.c create mode 100644 target/linux/patches/1d008423ab5fd12459f53342e4d17585ec63cfe4/perl-fix.patch diff --git a/package/heirloom-cpio/Makefile b/package/heirloom-cpio/Makefile deleted file mode 100644 index 6d06762a0..000000000 --- a/package/heirloom-cpio/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -include ${ADK_TOPDIR}/rules.mk - -PKG_NAME:= heirloom-cpio -PKG_VERSION:= 1.0 -PKG_RELEASE:= 1 -PKG_DESCR:= patched version of heirloom cpio -PKG_SECTION:= app/archive - -PKG_CFLINE_HEIRLOOM_CPIO:= depends on ADK_HOST_ONLY - -NO_DISTFILES:= 1 - -include ${ADK_TOPDIR}/mk/host.mk -include ${ADK_TOPDIR}/mk/package.mk - -$(eval $(call HOST_template,HEIRLOOM_CPIO,heirloom-cpio,${PKG_VERSION}-${PKG_RELEASE})) - -HOST_STYLE:= manual - -host-build: - (cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ - ${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) - -heirloom-cpio-hostinstall: - ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/bin - ${INSTALL_BIN} ${WRKBUILD}/cpio ${STAGING_HOST_DIR}/usr/bin - -include ${ADK_TOPDIR}/mk/host-bottom.mk -include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/heirloom-cpio/src/Makefile b/package/heirloom-cpio/src/Makefile deleted file mode 100644 index 0762453b9..000000000 --- a/package/heirloom-cpio/src/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# This file is part of the OpenADK project. OpenADK is copyrighted -# material, please see the LICENCE file in the top-level directory. - -all: cpio - -SRCS:= ib_open.c \ - ib_close.c \ - ib_read.c \ - ib_alloc.c \ - ib_free.c \ - ib_getlin.c \ - sfile.c \ - gmatch.c \ - sigset.c \ - memalign.c \ - version.c \ - blast.c \ - crc32.c \ - expand.c \ - explode.c \ - flags.c \ - inflate.c \ - unshrink.c \ - nonpax.c \ - cpio.c - -cpio: ${SRCS} - $(CC) $(CFLAGS) -D_GNU_SOURCE -I. -o $@ $^ diff --git a/package/heirloom-cpio/src/_alloca.h b/package/heirloom-cpio/src/_alloca.h deleted file mode 100644 index dc2afe5b4..000000000 --- a/package/heirloom-cpio/src/_alloca.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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 @(#)_alloca.h 1.5 (gritter) 1/22/06 */ - -#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || \ - defined (__DragonFly__) || defined (__APPLE__) -#include -#endif /* __FreeBSD__, __NetBSD__, __OpenBSD__, __DragonFly__, __APPLE__ */ diff --git a/package/heirloom-cpio/src/_malloc.h b/package/heirloom-cpio/src/_malloc.h deleted file mode 100644 index 1693e3673..000000000 --- a/package/heirloom-cpio/src/_malloc.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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 @(#)_malloc.h 1.2 (gritter) 5/1/04 */ - -#include - -extern void *memalign(size_t, size_t); diff --git a/package/heirloom-cpio/src/_utmpx.h b/package/heirloom-cpio/src/_utmpx.h deleted file mode 100644 index c32bd9527..000000000 --- a/package/heirloom-cpio/src/_utmpx.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2004 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 @(#)_utmpx.h 1.9 (gritter) 1/22/06 */ - -#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \ - defined (__UCLIBC__) || defined (__OpenBSD__) || \ - defined (__DragonFly__) || defined (__APPLE__) -#include -#include -#include - -#ifndef __dietlibc__ -struct utmpx { - char ut_user[UT_NAMESIZE]; - char ut_id[UT_LINESIZE]; - char ut_line[UT_LINESIZE]; - char ut_host[UT_HOSTSIZE]; - pid_t ut_pid; - short ut_type; - struct timeval ut_tv; - struct { - int e_termination; - int e_exit; - } ut_exit; -}; - -#ifndef EMPTY -#define EMPTY 0 -#endif -#ifndef BOOT_TIME -#define BOOT_TIME 1 -#endif -#ifndef OLD_TIME -#define OLD_TIME 2 -#endif -#ifndef NEW_TIME -#define NEW_TIME 3 -#endif -#ifndef USER_PROCESS -#define USER_PROCESS 4 -#endif -#ifndef INIT_PROCESS -#define INIT_PROCESS 5 -#endif -#ifndef LOGIN_PROCESS -#define LOGIN_PROCESS 6 -#endif -#ifndef DEAD_PROCESS -#define DEAD_PROCESS 7 -#endif -#ifndef RUN_LVL -#define RUN_LVL 8 -#endif -#ifndef ACCOUNTING -#define ACCOUNTING 9 -#endif -#else /* __dietlibc__ */ -#define utmpx utmp -#endif /* __dietlibc__ */ - -extern void endutxent(void); -extern struct utmpx *getutxent(void); -extern struct utmpx *getutxid(const struct utmpx *); -extern struct utmpx *getutxline(const struct utmpx *); -extern struct utmpx *pututxline(const struct utmpx *); -extern void setutxent(void); -extern int utmpxname(const char *); -extern void updwtmpx(const char *, const struct utmpx *); -#endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __UCLIBC__ || - __OpenBSD__ || __DragonFly__ || __APPLE__ */ diff --git a/package/heirloom-cpio/src/asciitype.c b/package/heirloom-cpio/src/asciitype.c deleted file mode 100644 index f7f322173..000000000 --- a/package/heirloom-cpio/src/asciitype.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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 @(#)asciitype.c 1.4 (gritter) 4/17/03 */ - -#include "asciitype.h" - -const unsigned char class_char[] = { -/* 000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel */ - C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL, -/* 010 bs 011 ht 012 nl 013 vt 014 np 015 cr 016 so 017 si */ - C_CNTRL,C_BLANK,C_WHITE,C_SPACE,C_SPACE,C_SPACE,C_CNTRL,C_CNTRL, -/* 020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb */ - C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL, -/* 030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us */ - C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL,C_CNTRL, -/* 040 sp 041 ! 042 " 043 # 044 $ 045 % 046 & 047 ' */ - C_BLANK,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT, -/* 050 ( 051 ) 052 * 053 + 054 , 055 - 056 . 057 / */ - C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT, -/* 060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7 */ - C_OCTAL,C_OCTAL,C_OCTAL,C_OCTAL,C_OCTAL,C_OCTAL,C_OCTAL,C_OCTAL, -/* 070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077 ? */ - C_DIGIT,C_DIGIT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT, -/* 100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G */ - C_PUNCT,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER, -/* 110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O */ - C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER, -/* 120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W */ - C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER,C_UPPER, -/* 130 X 131 Y 132 Z 133 [ 134 \ 135 ] 136 ^ 137 _ */ - C_UPPER,C_UPPER,C_UPPER,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT, -/* 140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g */ - C_PUNCT,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER, -/* 150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o */ - C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER, -/* 160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w */ - C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER,C_LOWER, -/* 170 x 171 y 172 z 173 { 174 | 175 } 176 ~ 177 del */ - C_LOWER,C_LOWER,C_LOWER,C_PUNCT,C_PUNCT,C_PUNCT,C_PUNCT,C_CNTRL -}; diff --git a/package/heirloom-cpio/src/asciitype.h b/package/heirloom-cpio/src/asciitype.h deleted file mode 100644 index 6ac1961a1..000000000 --- a/package/heirloom-cpio/src/asciitype.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 @(#)asciitype.h 1.6 (gritter) 9/9/05 */ - -/* - * Locale-independent character classes. - */ -enum { - C_CNTRL = 0000, - C_BLANK = 0001, - C_WHITE = 0002, - C_SPACE = 0004, - C_PUNCT = 0010, - C_OCTAL = 0020, - C_DIGIT = 0040, - C_UPPER = 0100, - C_LOWER = 0200 -}; - -extern const unsigned char class_char[]; - -#define asciichar(c) ((unsigned)(c) <= 0177) -#define alnumchar(c) (asciichar(c)&&(class_char[c]&\ - (C_DIGIT|C_OCTAL|C_UPPER|C_LOWER))) -#define alphachar(c) (asciichar(c)&&(class_char[c]&(C_UPPER|C_LOWER))) -#define blankchar(c) (asciichar(c)&&(class_char[c]&(C_BLANK))) -#define cntrlchar(c) (asciichar(c)&&(class_char[c]==C_CNTRL) -#define digitchar(c) (asciichar(c)&&(class_char[c]&(C_DIGIT|C_OCTAL))) -#define lowerchar(c) (asciichar(c)&&(class_char[c]&(C_LOWER))) -#define punctchar(c) (asciichar(c)&&(class_char[c]&(C_PUNCT))) -#define spacechar(c) (asciichar(c)&&(class_char[c]&(C_BLANK|C_SPACE|C_WHITE))) -#define upperchar(c) (asciichar(c)&&(class_char[c]&(C_UPPER))) -#define whitechar(c) (asciichar(c)&&(class_char[c]&(C_BLANK|C_WHITE))) -#define octalchar(c) (asciichar(c)&&(class_char[c]&(C_OCTAL))) -#define graphchar(c) (asciichar(c)&&(class_char[c]&\ - (C_UPPER|C_LOWER|C_DIGIT|C_OCTAL|C_PUNCT))) -#define printchar(c) ((c)==' ' || asciichar(c)&&(class_char[c]&\ - (C_UPPER|C_LOWER|C_DIGIT|C_OCTAL|C_PUNCT))) - -#define upperconv(c) (lowerchar(c) ? (c)-'a'+'A' : (c)) -#define lowerconv(c) (upperchar(c) ? (c)-'A'+'a' : (c)) diff --git a/package/heirloom-cpio/src/atoll.h b/package/heirloom-cpio/src/atoll.h deleted file mode 100644 index 8283aff64..000000000 --- a/package/heirloom-cpio/src/atoll.h +++ /dev/null @@ -1,8 +0,0 @@ -/* Sccsid @(#)atoll.h 1.4 (gritter) 7/18/04 */ - -#if defined (__hpux) || defined (_AIX) || \ - defined (__FreeBSD__) && (__FreeBSD__) < 5 -extern long long strtoll(const char *nptr, char **endptr, int base); -extern unsigned long long strtoull(const char *nptr, char **endptr, int base); -extern long long atoll(const char *nptr); -#endif /* __hpux || _AIX || __FreeBSD__ < 5 */ diff --git a/package/heirloom-cpio/src/blank.h b/package/heirloom-cpio/src/blank.h deleted file mode 100644 index 1ab3d57b8..000000000 --- a/package/heirloom-cpio/src/blank.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * isblank() and iswblank() are not available with many pre-XSH6 - * systems. Check whether isblank was defined, and assume it is - * not available if not. - */ -/* Sccsid @(#)blank.h 1.3 (gritter) 5/1/04 */ - -#ifndef __dietlibc__ -#ifndef LIBCOMMON_BLANK_H -#define LIBCOMMON_BLANK_H 1 - -#include -#include - -#ifndef isblank - -static -#ifdef __GNUC__ -__inline__ -#endif /* __GNUC__ */ -int -my_isblank(int c) -{ - return c == ' ' || c == '\t'; -} -#define isblank(c) my_isblank(c) - -static int -my_iswblank(wint_t c) -{ - return c == L' ' || c == L'\t'; -} -#undef iswblank -#define iswblank(c) my_iswblank(c) - -#endif /* !isblank */ -#endif /* !LIBCOMMON_BLANK_H */ -#endif /* !__dietlibc__ */ diff --git a/package/heirloom-cpio/src/blast.c b/package/heirloom-cpio/src/blast.c deleted file mode 100644 index b62efd585..000000000 --- a/package/heirloom-cpio/src/blast.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Changes by Gunnar Ritter, Freiburg i. Br., Germany, February 2004. - * - * Sccsid @(#)blast.c 1.2 (gritter) 2/17/04 - */ -/* blast.c - * Copyright (C) 2003 Mark Adler - * For conditions of distribution and use, see copyright notice in blast.h - * version 1.1, 16 Feb 2003 - * - * blast.c decompresses data compressed by the PKWare Compression Library. - * This function provides functionality similar to the explode() function of - * the PKWare library, hence the name "blast". - * - * This decompressor is based on the excellent format description provided by - * Ben Rudiak-Gould in comp.compression on August 13, 2001. Interestingly, the - * example Ben provided in the post is incorrect. The distance 110001 should - * instead be 111000. When corrected, the example byte stream becomes: - * - * 00 04 82 24 25 8f 80 7f - * - * which decompresses to "AIAIAIAIAIAIA" (without the quotes). - */ - -/* - * Change history: - * - * 1.0 12 Feb 2003 - First version - * 1.1 16 Feb 2003 - Fixed distance check for > 4 GB uncompressed data - */ - -#include /* for setjmp(), longjmp(), and jmp_buf */ -#include "blast.h" /* prototype for blast() */ - -#define local static /* for local function definitions */ -#define MAXBITS 13 /* maximum code length */ -#define MAXWIN 4096 /* maximum window size */ - -/* input and output state */ -struct state { - /* input state */ - blast_in infun; /* input function provided by user */ - void *inhow; /* opaque information passed to infun() */ - unsigned char *in; /* next input location */ - unsigned left; /* available input at in */ - int bitbuf; /* bit buffer */ - int bitcnt; /* number of bits in bit buffer */ - - /* input limit error return state for bits() and decode() */ - jmp_buf env; - - /* output state */ - blast_out outfun; /* output function provided by user */ - void *outhow; /* opaque information passed to outfun() */ - unsigned next; /* index of next write location in out[] */ - int first; /* true to check distances (for first 4K) */ - unsigned char out[MAXWIN]; /* output buffer and sliding window */ -}; - -/* - * Return need bits from the input stream. This always leaves less than - * eight bits in the buffer. bits() works properly for need == 0. - * - * Format notes: - * - * - Bits are stored in bytes from the least significant bit to the most - * significant bit. Therefore bits are dropped from the bottom of the bit - * buffer, using shift right, and new bytes are appended to the top of the - * bit buffer, using shift left. - */ -local int bits(struct state *s, int need) -{ - int val; /* bit accumulator */ - - /* load at least need bits into val */ - val = s->bitbuf; - while (s->bitcnt < need) { - if (s->left == 0) { - s->left = s->infun(s->inhow, &(s->in)); - if (s->left == 0) longjmp(s->env, 1); /* out of input */ - } - val |= (int)(*(s->in)++) << s->bitcnt; /* load eight bits */ - s->left--; - s->bitcnt += 8; - } - - /* drop need bits and update buffer, always zero to seven bits left */ - s->bitbuf = val >> need; - s->bitcnt -= need; - - /* return need bits, zeroing the bits above that */ - return val & ((1 << need) - 1); -} - -/* - * Huffman code decoding tables. count[1..MAXBITS] is the number of symbols of - * each length, which for a canonical code are stepped through in order. - * symbol[] are the symbol values in canonical order, where the number of - * entries is the sum of the counts in count[]. The decoding process can be - * seen in the function decode() below. - */ -struct huffman { - short *count; /* number of symbols of each length */ - short *symbol; /* canonically ordered symbols */ -}; - -/* - * Decode a code from the stream s using huffman table h. Return the symbol or - * a negative value if there is an error. If all of the lengths are zero, i.e. - * an empty code, or if the code is incomplete and an invalid code is received, - * then -9 is returned after reading MAXBITS bits. - * - * Format notes: - * - * - The codes as stored in the compressed data are bit-reversed relative to - * a simple integer ordering of codes of the same lengths. Hence below the - * bits are pulled from the compressed data one at a time and used to - * build the code value reversed from what is in the stream in order to - * permit simple integer comparisons for decoding. - * - * - The first code for the shortest length is all ones. Subsequent codes of - * the same length are simply integer decrements of the previous code. When - * moving up a length, a one bit is appended to the code. For a complete - * code, the last code of the longest length will be all zeros. To support - * this ordering, the bits pulled during decoding are inverted to apply the - * more "natural" ordering starting with all zeros and incrementing. - */ -local int decode(struct state *s, struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - int bitbuf; /* bits from stream */ - int left; /* bits left in next or left to process */ - short *next; /* next number of codes */ - - bitbuf = s->bitbuf; - left = s->bitcnt; - code = first = index = 0; - len = 1; - next = h->count + 1; - while (1) { - while (left--) { - code |= (bitbuf & 1) ^ 1; /* invert code */ - bitbuf >>= 1; - count = *next++; - if (code < first + count) { /* if length len, return symbol */ - s->bitbuf = bitbuf; - s->bitcnt = (s->bitcnt - len) & 7; - return h->symbol[index + (code - first)]; - } - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - len++; - } - left = (MAXBITS+1) - len; - if (left == 0) break; - if (s->left == 0) { - s->left = s->infun(s->inhow, &(s->in)); - if (s->left == 0) longjmp(s->env, 1); /* out of input */ - } - bitbuf = *(s->in)++; - s->left--; - if (left > 8) left = 8; - } - return -9; /* ran out of codes */ -} - -/* - * Given a list of repeated code lengths rep[0..n-1], where each byte is a - * count (high four bits + 1) and a code length (low four bits), generate the - * list of code lengths. This compaction reduces the size of the object code. - * Then given the list of code lengths length[0..n-1] representing a canonical - * Huffman code for n symbols, construct the tables required to decode those - * codes. Those tables are the number of codes of each length, and the symbols - * sorted by length, retaining their original order within each length. The - * return value is zero for a complete code set, negative for an over- - * subscribed code set, and positive for an incomplete code set. The tables - * can be used if the return value is zero or positive, but they cannot be used - * if the return value is negative. If the return value is zero, it is not - * possible for decode() using that table to return an error--any stream of - * enough bits will resolve to a symbol. If the return value is positive, then - * it is possible for decode() using that table to return an error for received - * codes past the end of the incomplete lengths. - */ -local int construct(struct huffman *h, const unsigned char *rep, int n) -{ - int symbol; /* current symbol when stepping through length[] */ - int len; /* current length when stepping through h->count[] */ - int left; /* number of possible codes left of current length */ - short offs[MAXBITS+1]; /* offsets in symbol table for each length */ - short length[256]; /* code lengths */ - - /* convert compact repeat counts into symbol bit length list */ - symbol = 0; - do { - len = *rep++; - left = (len >> 4) + 1; - len &= 15; - do { - length[symbol++] = len; - } while (--left); - } while (--n); - n = symbol; - - /* count number of codes of each length */ - for (len = 0; len <= MAXBITS; len++) - h->count[len] = 0; - for (symbol = 0; symbol < n; symbol++) - (h->count[length[symbol]])++; /* assumes lengths are within bounds */ - if (h->count[0] == n) /* no codes! */ - return 0; /* complete, but decode() will fail */ - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; /* one possible code of zero length */ - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; /* one more bit, double codes left */ - left -= h->count[len]; /* deduct count from possible codes */ - if (left < 0) return left; /* over-subscribed--return negative */ - } /* left > 0 means incomplete */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + h->count[len]; - - /* - * put symbols in table sorted by length, by symbol order within each - * length - */ - for (symbol = 0; symbol < n; symbol++) - if (length[symbol] != 0) - h->symbol[offs[length[symbol]]++] = symbol; - - /* return zero for complete set, positive for incomplete set */ - return left; -} - -/* - * Decode PKWare Compression Library stream. - * - * Format notes: - * - * - First byte is 0 if literals are uncoded or 1 if they are coded. Second - * byte is 4, 5, or 6 for the number of extra bits in the distance code. - * This is the base-2 logarithm of the dictionary size minus six. - * - * - Compressed data is a combination of literals and length/distance pairs - * terminated by an end code. Literals are either Huffman coded or - * uncoded bytes. A length/distance pair is a coded length followed by a - * coded distance to represent a string that occurs earlier in the - * uncompressed data that occurs again at the current location. - * - * - A bit preceding a literal or length/distance pair indicates which comes - * next, 0 for literals, 1 for length/distance. - * - * - If literals are uncoded, then the next eight bits are the literal, in the - * normal bit order in th stream, i.e. no bit-reversal is needed. Similarly, - * no bit reversal is needed for either the length extra bits or the distance - * extra bits. - * - * - Literal bytes are simply written to the output. A length/distance pair is - * an instruction to copy previously uncompressed bytes to the output. The - * copy is from distance bytes back in the output stream, copying for length - * bytes. - * - * - Distances pointing before the beginning of the output data are not - * permitted. - * - * - Overlapped copies, where the length is greater than the distance, are - * allowed and common. For example, a distance of one and a length of 518 - * simply copies the last byte 518 times. A distance of four and a length of - * twelve copies the last four bytes three times. A simple forward copy - * ignoring whether the length is greater than the distance or not implements - * this correctly. - */ -local int decomp(struct state *s) -{ - int lit; /* true if literals are coded */ - int dict; /* log2(dictionary size) - 6 */ - int symbol; /* decoded symbol, extra bits for distance */ - int len; /* length for copy */ - int dist; /* distance for copy */ - int copy; /* copy counter */ - unsigned char *from, *to; /* copy pointers */ - static int virgin = 1; /* build tables once */ - static short litcnt[MAXBITS+1], litsym[256]; /* litcode memory */ - static short lencnt[MAXBITS+1], lensym[16]; /* lencode memory */ - static short distcnt[MAXBITS+1], distsym[64]; /* distcode memory */ - static struct huffman litcode = {litcnt, litsym}; /* length code */ - static struct huffman lencode = {lencnt, lensym}; /* length code */ - static struct huffman distcode = {distcnt, distsym};/* distance code */ - /* bit lengths of literal codes */ - static const unsigned char litlen[] = { - 11, 124, 8, 7, 28, 7, 188, 13, 76, 4, 10, 8, 12, 10, 12, 10, 8, 23, 8, - 9, 7, 6, 7, 8, 7, 6, 55, 8, 23, 24, 12, 11, 7, 9, 11, 12, 6, 7, 22, 5, - 7, 24, 6, 11, 9, 6, 7, 22, 7, 11, 38, 7, 9, 8, 25, 11, 8, 11, 9, 12, - 8, 12, 5, 38, 5, 38, 5, 11, 7, 5, 6, 21, 6, 10, 53, 8, 7, 24, 10, 27, - 44, 253, 253, 253, 252, 252, 252, 13, 12, 45, 12, 45, 12, 61, 12, 45, - 44, 173}; - /* bit lengths of length codes 0..15 */ - static const unsigned char lenlen[] = {2, 35, 36, 53, 38, 23}; - /* bit lengths of distance codes 0..63 */ - static const unsigned char distlen[] = {2, 20, 53, 230, 247, 151, 248}; - static const short base[16] = { /* base for length codes */ - 3, 2, 4, 5, 6, 7, 8, 9, 10, 12, 16, 24, 40, 72, 136, 264}; - static const char extra[16] = { /* extra bits for length codes */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8}; - - /* set up decoding tables (once--might not be thread-safe) */ - if (virgin) { - construct(&litcode, litlen, sizeof(litlen)); - construct(&lencode, lenlen, sizeof(lenlen)); - construct(&distcode, distlen, sizeof(distlen)); - virgin = 0; - } - - /* read header */ - lit = bits(s, 8); - if (lit > 1) return -1; - dict = bits(s, 8); - if (dict < 4 || dict > 6) return -2; - - /* decode literals and length/distance pairs */ - do { - if (bits(s, 1)) { - /* get length */ - symbol = decode(s, &lencode); - len = base[symbol] + bits(s, extra[symbol]); - if (len == 519) break; /* end code */ - - /* get distance */ - symbol = len == 2 ? 2 : dict; - dist = decode(s, &distcode) << symbol; - dist += bits(s, symbol); - dist++; - if (s->first && dist > s->next) - return -3; /* distance too far back */ - - /* copy length bytes from distance bytes back */ - do { - to = s->out + s->next; - from = to - dist; - copy = MAXWIN; - if (s->next < dist) { - from += copy; - copy = dist; - } - copy -= s->next; - if (copy > len) copy = len; - len -= copy; - s->next += copy; - do { - *to++ = *from++; - } while (--copy); - if (s->next == MAXWIN) { - if (s->outfun(s->outhow, s->out, s->next)) return 1; - s->next = 0; - s->first = 0; - } - } while (len != 0); - } - else { - /* get literal and write it */ - symbol = lit ? decode(s, &litcode) : bits(s, 8); - s->out[s->next++] = symbol; - if (s->next == MAXWIN) { - if (s->outfun(s->outhow, s->out, s->next)) return 1; - s->next = 0; - s->first = 0; - } - } - } while (1); - return 0; -} - -/* See comments in blast.h */ -int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow) -{ - struct state s; /* input/output state */ - int err; /* return value */ - - /* initialize input state */ - s.infun = infun; - s.inhow = inhow; - s.left = 0; - s.bitbuf = 0; - s.bitcnt = 0; - - /* initialize output state */ - s.outfun = outfun; - s.outhow = outhow; - s.next = 0; - s.first = 1; - - /* return if bits() or decode() tries to read past available input */ - if (setjmp(s.env) != 0) /* if came back here via longjmp(), */ - err = 2; /* then skip decomp(), return error */ - else - err = decomp(&s); /* decompress */ - - /* write any leftover output and update the error code if needed */ - if (err != 1 && s.next && s.outfun(s.outhow, s.out, s.next) && err == 0) - err = 1; - return err; -} - -#ifdef TEST -/* Example of how to use blast() */ -#include -#include - -#define CHUNK 16384 - -local unsigned inf(void *how, unsigned char **buf) -{ - static unsigned char hold[CHUNK]; - - *buf = hold; - return fread(hold, 1, CHUNK, (FILE *)how); -} - -local int outf(void *how, unsigned char *buf, unsigned len) -{ - return fwrite(buf, 1, len, (FILE *)how) != len; -} - -/* Decompress a PKWare Compression Library stream from stdin to stdout */ -int main(void) -{ - int ret, n; - - /* decompress to stdout */ - ret = blast(inf, stdin, outf, stdout); - if (ret != 0) fprintf(stderr, "blast error: %d\n", ret); - - /* see if there are any leftover bytes */ - n = 0; - while (getchar() != EOF) n++; - if (n) fprintf(stderr, "blast warning: %d unused bytes of input\n", n); - - /* return blast() error code */ - return ret; -} -#endif diff --git a/package/heirloom-cpio/src/blast.h b/package/heirloom-cpio/src/blast.h deleted file mode 100644 index 0c16d1391..000000000 --- a/package/heirloom-cpio/src/blast.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Changes by Gunnar Ritter, Freiburg i. Br., Germany, February 2004. - * - * Sccsid @(#)blast.h 1.2 (gritter) 2/17/04 - */ -/* blast.h -- interface for blast.c - Copyright (C) 2003 Mark Adler - version 1.1, 16 Feb 2003 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author 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. - - Mark Adler madler@alumni.caltech.edu - */ - - -/* - * blast() decompresses the PKWare Data Compression Library (DCL) compressed - * format. It provides the same functionality as the explode() function in - * that library. (Note: PKWare overused the "implode" verb, and the format - * used by their library implode() function is completely different and - * incompatible with the implode compression method supported by PKZIP.) - */ - - -typedef unsigned (*blast_in)(void *how, unsigned char **buf); -typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len); -/* Definitions for input/output functions passed to blast(). See below for - * what the provided functions need to do. - */ - - -int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow); -/* Decompress input to output using the provided infun() and outfun() calls. - * On success, the return value of blast() is zero. If there is an error in - * the source data, i.e. it is not in the proper format, then a negative value - * is returned. If there is not enough input available or there is not enough - * output space, then a positive error is returned. - * - * The input function is invoked: len = infun(how, &buf), where buf is set by - * infun() to point to the input buffer, and infun() returns the number of - * available bytes there. If infun() returns zero, then blast() returns with - * an input error. (blast() only asks for input if it needs it.) inhow is for - * use by the application to pass an input descriptor to infun(), if desired. - * - * The output function is invoked: err = outfun(how, buf, len), where the bytes - * to be written are buf[0..len-1]. If err is not zero, then blast() returns - * with an output error. outfun() is always called with len <= 4096. outhow - * is for use by the application to pass an output descriptor to outfun(), if - * desired. - * - * The return codes are: - * - * 2: ran out of input before completing decompression - * 1: output error before completing decompression - * 0: successful decompression - * -1: literal flag not zero or one - * -2: dictionary size not in 4..6 - * -3: distance is too far back - * - * At the bottom of blast.c is an example program that uses blast() that can be - * compiled to produce a command-line decompression filter by defining TEST. - */ diff --git a/package/heirloom-cpio/src/cpio.1 b/package/heirloom-cpio/src/cpio.1 deleted file mode 100644 index 9c8b1f98c..000000000 --- a/package/heirloom-cpio/src/cpio.1 +++ /dev/null @@ -1,943 +0,0 @@ -'\" t -.\" 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.1 1.92 (gritter) 3/26/07 -.TH CPIO 1 "3/26/07" "Heirloom Toolchest" "User Commands" -.SH NAME -cpio \- copy file archives in and out -.SH SYNOPSIS -.PD 0 -.HP -.nh -.ad l -\fBcpio\fR \fB\-i\fR[\fBbcdfkmrstuvBSV6\fR] [\fB\-C\fI\ size\fR] -[\fB\-E\fI\ file\fR] [\fB\-H\fI\ hdr\fR] [[\fB\-I\fI\ file\fR] -[\fB\-M\fI\ msg\fR]] [\fB\-R\fI\ id\fR] [\fIpatterns\fR] -.HP -.ad l -\fBcpio\fR \fB\-o\fR[\fBacvABLPV\fR] [\fB\-C\fI\ size\fR] -[\fB\-H\fI\ hdr\fR] [[\fB\-M\fI\ msg\fR] [\fB\-O\fI\ file\fR]] -.HP -.ad l -\fBcpio\fR \fB\-p\fR[\fBadlmPuvLV\fR] [\fB\-R\fI\ id\fR] \fIdirectory\fR -.br -.PD -.ad b -.hy 1 -.SH DESCRIPTION -.I Cpio -creates and extracts file archives and copies files. -.PP -With the -.B \-i -option, -.I cpio -works in -.RI ` copy-in ' -mode and extracts files from a file archive. -By default, -the archive is read from standard input. -Optional arguments are interpreted as -.I patterns -and restrict the set of extracted files -to those matching any of the -.IR patterns . -A -.RB ` !\& ' -at the beginning of the -.I pattern -selects all files that do not match this -.IR pattern . -The syntax is otherwise identical to that described in -.IR glob (7), -except that the slash character -.RB ` / ' -is matched by -meta-character constructs with -.RB ` * ', -.RB ` ? ' -and -.RB ` [ '. -Care must be taken to quote meta-characters appropriately from the shell. -File permissions are set to those in the archive; -if the caller is the super-user, -ownerships are restored as well. -.I Cpio -will not create directories, -preserve modification times -or overwrite more recently modified target files -unless the appropriate -.IR \-d , -.I \-m -or -.I \-u -options are specified. -Archives compressed with -.IR bzip2 (1), -.IR compress (1), -.IR gzip (1), -or -.IR rpm (1) -are transparently de\%compressed on input. -.PP -With -.BR \-o , -.I cpio -works in -.RI ` copy-out ' -mode, -creates archives -and writes them to standard output per default. -A list of filenames to be included in the archive is -read from standard input; -if the name of a directory appears, -it is included in the archive, -but -.I cpio -will not include any of its members -unless they are explicitly given in addition. -The -.IR find (1) -utility is useful to generate a list of files -(see also its -.I \-cpio -and -.I \-ncpio -operators). -When producing a filename list for -.IR cpio , -find should always be invoked with -.I \-depth -since this makes it possible to extract write-protected directories -for users other than the super-user. -.PP -The -.B \-p -option selects -.RI ` pass ' -mode; -a list of files is read from standard input as described for -.IR \-o ; -files are copied to the specified -.IR directory , -preserving attributes as described for -.IR \-i . -Special files are re-created in the target hierarchy, -and hard links between copied files are preserved. -.PP -When a premature end-of-file is detected with -.I \-i -and -.I \-o -and the archive is a block or character special file, -the user is prompted for new media. -.PP -The following options alter the behavior of -.IR cpio : -.TP -.B \-a -Resets the access times of files -that were included in the archive with -.I \-o -or copied with -.IR \-p . -.TP -.B \-A -Append files to the archive. -The archive must be seekable, -such as a regular file or a block device, -or a tape device capable of writing between filemarks. -.TP -.B \-b -Swap bytes within each half word -and half words within each word -of input file data. -.TP -.B \-B -Blocks input and output archives at 5120 byte records. -The default blocking size is device dependent. -.TP -.B \-c -Specifies that archive headers are in SVR4 ASCII cpio format. -This option is ignored with -.I \-i -unless the -.I \-k -option is also present. -.TP -\fB\-C\fI size\fR -Blocks input and output archives at -.I size -byte records. -.TP -.B \-d -Creates missing parent directories -for each file extracted from the archive -and allows the extraction of directories. -.TP -\fB\-E\fI file\fR -Each line read from -.I file -is taken as a pattern in addition -to those specified on the command line. -.TP -.B \-f -Reverses the sense of patterns -such that a file that does not match any of the patterns -is selected. -.TP -\fB\-H\fI header\fR -Specifies the archive header format to be one of: -.sp -.in +6 -.TS -lfB l. -\fBcrc\fR SVR4 ASCII cpio format with checksum;\ -\fBsco\fR T{ -SCO UnixWare 7.1 ASCII cpio format; -T} -\fBscocrc\fR T{ -SCO UnixWare 7.1 ASCII cpio format with checksum; -T} -\fBodc\fR T{ -traditional ASCII cpio format, as standardized in IEEE Std. 1003.1, 1996; -T} -\fBbbs\fR byte-swapped binary cpio format; -\fBsgi\fR T{ -SGI IRIX extended binary cpio format; -T} -\fBcray\fR T{ -Cray UNICOS 9 cpio format; -T} -\fBcray5\fR T{ -Cray UNICOS 5 cpio format; -T} -\fBdec\fR T{ -Digital UNIX extended cpio format; -T} -\fBtar\fR tar format; -\fBotar\fR old tar format; -\fBustar\fR T{ -IEEE Std. 1003.1, 1996 tar format; -T} -.T& -l s. -\fBpax\fR[\fB:\fIoption\fB,\fR[\fIoption\fB,\fR\|...]] -.T& -l l. -\& T{ -IEEE Std. 1003.1, 2001 pax format. -Format-specific \fIoptions\fR are: -.in +2n -.ti 0 -.br -\fBlinkdata\fR -.br -For a regular file which has multiple hard links, -the file data is stored once for each link in the archive, -instead of being stored for the first entry only. -This option must be used with care -since many implementations are unable -to read the resulting archive. -.ti 0 -.br -\fBtimes\fR -.br -Causes the times of last access and last modification -of each archived file -to be stored in an extended \fIpax\fR header. -This in particular allows the time of last access -to be restored when the archive is read. -.br -.in -2n -T} -\fBsun\fR T{ -Sun Solaris 7 extended tar format; -T} -\fBgnu\fR T{ -GNU tar format; -T} -\fBbar\fR T{ -SunOS 4 bar format; -T} -\fBzip\fR[\fB:\fIcc\fR] T{ -zip format with optional compression method. -If \fIcc\fR is one of -\fBen\fR (normal, default), -\fBex\fR (extra), -\fBef\fR (fast), -or -\fBes\fR (super fast), -the standard \fIdeflate\fR compression is used. -\fBe0\fR selects no compression, -and -\fBbz2\fR selects \fIbzip2\fR compression. -T} -.TE -.in -6 -.sp -This option is ignored with -.I \-i -unless the -.I \-k -option is also present. -The default for -.I \-o -is binary cpio format. -.TP -\fB\-I\fI\ file\fR -Selects a -.I file -that is read with the -.I \-i -option instead of standard input. -.TP -.B \-k -Try to continue operation on read errors and invalid headers. -If an archive contains another archive, -files from either archive may be chosen. -.TP -.B \-l -Link files instead of copying them with -.I \-p -if possible. -.TP -.B \-L -Follow symbolic links when reading files with -.I \-o -or -.IR \-p . -.TP -.B \-m -Restore modification times of extracted files -to those given in the archive. -.TP -\fB\-M\fI message\fR -The given -.I message -is printed instead of the standard one -with -.I \-I -or -.I \-O -when changing media. -.TP -\fB\-O\fI file\fR -Selects an archive -.I file -that is written instead of standard output -with the -.I \-o -option. -.TP -.B \-P -In copy-out or pass mode, -interpret the data read from standard input -as prototype lines -of colon-separated fields -of the form -.in +3m -.sp -\fItype\fB:\fIuser\fB:\fIgroup\fB:\fImode\fB:\fIatime\fB:\fImtime\fB:\fImajor\fB:\fIminor\fB:\fIpath\fR -.sp -.in -3m -For each non-empty field, -the corresponding attribute of the input file is overridden. -With this option, -an unprivileged user can create -an archive that contains files -with arbitrary attributes. -The meanings of the individual fields are: -.RS -.TP 6 -.PD 0 -.I type -File type, one of: -\fBb\fR (block device), -\fBc\fR (character device), -\fBd\fR (directory), -\fBf\fR (plain file), -\fBp\fR (named pipe), -or -\fBs\fR (symbolic link). -.TP -.I user -The owner of the file, -which can be a numeric user ID or a user name. -.TP -.I group -The group owner of the file, -which can be a numeric group ID or a group name. -.TP -.I mode -The octal mode of the file. -.TP -.I atime -The time the file was last accessed. -Note that most archive formats cannot store this attribute, -in which case it is ignored. -The format is the same as that of the -.I mtime -field. -.TP -.I mtime -The time the file was last modified. -This is either a decimal integer -specifying the seconds past the epoch, -or an ISO\ 8601 date and time field -of the format \fIYYYYMMDD\fBT\fIHHMMSS\fR, -e.g. 20070326T190511, -the latter being relative to the current time zone -and with all digits past the \fBT\fR being optional. -.TP -.I major minor -Major and minor device numbers as with -.IR mknod (1M). -These fields are only allowed for block and character devices. -.TP -.I path -The name of the file to be archived. -If the file is not a symbolic link, -and the specification is otherwise sufficient, -the file needs not exist -at the time the archive is created. -A non-existent regular file will be empty in the archive. -.PD -.RE -.IP -This option is an extension. -.TP -.B \-r -Rename files interactively. -Before a file is extracted from the archive, -its file name is printed on standard error -and the user is prompted to specify a substitute file name. -If the line read from the terminal is empty, -the file is skipped; -if the line consists of a single dot, -the name is retained; -otherwise, -the line forms the new file name. -.TP -\fB\-R\fI user\fR -Set the ownership of extracted files -to the user and group ids of -.I user -instead of those specified in the archive. -Valid only for the super-user. -.TP -.B \-s -Swap bytes within each half word -of input file data. -.TP -.B \-S -Swap half words within each word -of input file data. -.TP -.B \-t -When combined with the -.I \-o -option, -a list of files in the archive is written to standard output; -no files are extracted. -.TP -.B \-u -.I Cpio -will overwrite existing target files -that were modified more recently than the file in the archive -when this option is given. -.TP -.B \-v -Prints the file names of archived or extracted files with -.I \-i -and -.I \-o -and a verbose output format with -.IR \-t . -If given twice -.RB ( \-vv ) -in combination with -.I \-t -when reading a -.I zip -archive, -information about compression level and method is printed. -.TP -.B \-V -Prints a dot for each archived or extracted file. -.TP -.B \-6 -Selects Unix 6th Edition archive format -(only in copy-in mode). -.PP -.ne 37 -Characteristics of archive formats are as follows: -.sp -.TS -allbox; -l r r r l -l1fB r2 n2 r2 c. - T{ -.ad l -maximum user/\%group id -T} T{ -.ad l -maximum file size -T} T{ -.ad l -maximum pathname length -T} T{ -.ad l -bits in dev_t (major/minor) -T} -binary 65535 2 GB\ 256 \ 16 -\-H\ sgi 65535 9 EB\ 256 \ 14/18 -\-H\ odc 262143 8 GB\ 256 \ 18 -\-H\ dec 262143 8 GB\ 256 \ 24/24 -T{ -\-c, \-H\ crc -T} 4.3e9 4 GB\ 1024 \ 32/32 -T{ -\-H\ sco, \-H\ scocrc -T} 4.3e9 9 EB\ 1024 \ 32/32 -T{ -\-H\ cray, \-H\ cray5 -T} 1.8e19 9 EB\ 65535 \ 64 -\-H\ otar 2097151 8 GB\ 99 \ n/a -T{ -\-H\ tar, -\-H\ ustar -T} 2097151 8 GB\ 256 (99) \ 21/21 -\-H\ pax 1.8e19 9 EB\ 65535 \ 21/21 -\-H\ sun 1.8e19 9 EB\ 65535 \ 63/63 -\-H\ gnu 1.8e19 9 EB\ 65535 \ 63/63 -\-H\ bar 2097151 8 GB\ 427 \ 21 -\-H\ zip 4.3e9 9 EB\ 60000 \ 32 -.TE -.sp -.PP -By default, -.B binary -cpio archives are written. -The byte order of such archives -depends on the machine -on which the archive is created. -Unlike some other implementations, -.I cpio -fully supports -archives of either byte order. -.I \-H\ bbs -can be used to create an archive -with the byte order opposed to that of the current machine. -.PP -The -.B sgi -format extends the binary format -to handle larger files and more device bits. -If an archive does not contain any entries -that actually need the extensions, -it is identical to a binary archive. -.I \-H\ sgi -archives are always created in MSB order. -.PP -The -.B odc -format was introduced with System\ III -and standardized with IEEE Std. 1003.1. -All known -.I cpio -implementations since around 1980 can read this format. -.PP -The -.B dec -format extends the -.I odc -format -to support more device bits. -Archives in this format are generally incompatible with -.I odc -archives -and need special implementation support to be read. -.PP -The -.B \-c -format was introduced with System\ V Release\ 4. -Except for the file size, -it imposes no practical limitations -on files archived. -The original SVR4 implementation -stores the contents of hard linked files -only once and with the last archived link. -This -.I cpio -ensures compatibility with SVR4. -With archives created by implementations that employ other methods -for storing hard linked files, -each file is extracted as a single link, -and some of these files may be empty. -Implementations that expect methods other than the original SVR4 one -may extract no data for hard linked files at all. -.PP -The -.B crc -format is essentially the same as the -.I \-c -format -but adds a simple checksum (not a CRC, despite its name) -for the data of regular files. -The checksum requires the implementation to read each file twice, -which can considerably increase running time and system overhead. -As not all implementations claiming to support this format -handle the checksum correctly, -it is of limited use. -.PP -The -.B sco -and -.B scocrc -formats are variants of the -.I \-c -and -.I \-H\ crc -formats, respectively, -with extensions to support larger files. -The extensions result in a different archive format -only if files larger than slightly below 2\ GB occur. -.PP -The -.B cray -format extends all header fields to 64 bits. -It thus imposes no practical limitations of any kind -on archived files, -but requires special implementation support -to be read. -Although it is originally a binary format, -the byte order is always MSB as on Cray machines. -The -.B cray5 -format is an older variant -that was used with UNICOS 5 and earlier. -.PP -The -.B otar -format was introduced with the Unix 7th Edition -.I tar -utility. -Archives in this format -can be read on all Unix systems since about 1980. -It can only hold regular files -(and, on more recent systems, symbolic links). -For file names that contain characters with the most significant bit set -(non-ASCII characters), -implementations differ in the interpretation of the header checksum. -.PP -The -.B ustar -format was introduced with IEEE Std. 1003.1. -It extends the old -.I tar -format -with support for directories, device files, -and longer file names. -Pathnames of single-linked files can consist of up to 256 characters, -dependent on the position of slashes. -Files with multiple links can only be archived -if the first link encountered is no longer than 100 characters. -Due to implementation errors, -file names longer than 99 characters -can not considered to be generally portable. -Another addition of the -.I ustar -format -are fields for the symbolic user and group IDs. -These fields are created by -.IR cpio , -but ignored when reading such archives. -.PP -With -.BR "\-H tar" , -a variant of the -.I ustar -format is selected -which stores file type bits in the mode field -to work around common implementation problems. -These bits are ignored by -.I cpio -when reading archives. -.PP -The -.B pax -format is an extension to the -.I ustar -format. -If attributes cannot be archived with -.IR ustar , -an extended header is written. -Unless the size of an entry is greater than 8\ GB, -a -.I pax -archive should be readable by any implementation -capable of reading -.I ustar -archives, -although files may be extracted under wrong names -and extended headers may be extracted as separate files. -If a file name contains non-UTF-8 characters, -it may not be archived or extracted correctly -because of a problem of the -.I pax -format specification. -.PP -The -.B sun -format extends the -.I ustar -format similar as the -.I pax -format does. -The extended headers in -.I sun -format archives are not understood -by implementations that support only the -.I pax -format and vice-versa. -The -.I sun -format has also problems with non-UTF-8 characters in file names. -.PP -The -.B GNU -.I tar -format is mostly compatible with the other -.I tar -formats, -unless an archive entry actually uses its extended features. -There are no practical limitations on files archived with this format. -The implementation of -.I cpio -is limited to expanded numerical fields -and long file names; -in particular, -there is no support for sparse files or incremental backups. -If -.I cpio -creates a multi-volume -.I GNU -archive, -it just splits a single-volume archive in multiple parts, -as with the other formats; -.I GNU -multi-volume archives are not supported. -.PP -The -.B bar -format is similar to the -.I tar -format, but can store longer file names. -It requires special implementation support to be read. -.PP -The -.B zip -format can be read in many non-Unix environments. -There are several restrictions on archives -intended for data exchange: -only regular files should be stored; -file times, permissions and ownerships -might be ignored by other implementations; -there should be no more than 65536 files in the archive; -the total archive size should not exceed 2 GB; -only -.I deflate -compression should be used. -Otherwise, -.I cpio -stores all information available with other archive formats -in extended -.I zip -file headers, -so if archive portability is of no concern, -the -.I zip -implementation in -.I cpio -can archive complete Unix file hierarchies. -.I Cpio -supports the -.I zip64 -format extension for large files; -it automatically writes -.I zip64 -entries if necessary. -.I Cpio -can extract all known -.I zip -format compression codes. -It does not support -.I zip -encryption. -Multi-volume -.I zip -archives are created as splitted single-volume archives, -as with the other formats written by -.IR cpio ; -generic multi-volume -.I zip -archives are not supported. -.SH EXAMPLES -Extract all files named -.I Makefile -or -.I makefile -from the archive stored on -.IR /dev/rmt/c0s0 , -overwriting recent files: -.RS 2 -.sp -cpio \-idmu \-I /dev/rmt/c0s0 \'[Mm]akefile\' \'*/[Mm]akefile\' -.RE -.PP -List the files contained in a software distribution archive: -.RS 2 -.sp -cpio \-itv \-I distribution.tar.gz -.RE -.PP -Write a -.IR gzip (1) -compressed -.I ustar -archive containing all files below the directory -.I \%project -to the file -.IR \%project.tar.gz , -excluding all directories named -.I CVS -or -.I SCCS -and their contents: -.RS 2 -.sp -find project \-depth \-print | egrep \-v \'/(CVS|SCCS)(/|$)\' | -.br - cpio \-o \-H ustar | gzip \-c > project.tar.gz -.RE -.PP -Copy the directory -.I work -and its contents -to the directory -.IR \%savedfiles : -.RS 2 -.sp -find work \-depth \-print | cpio \-pdm savedfiles -.RE -.PP -Self-extracting zip archives are not automatically recognized, -but can normally be read using the -.I \-k -option, as with -.RS 2 -.sp