From a15413efbbd28af7ed631cfb2f6033f5dde3bb55 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sat, 22 Oct 2011 15:28:11 -0600 Subject: [PATCH] commit current patch list --- debian/patches/lump-debian-diffs | 1456 ++++++++++++++++++++++++++++++ debian/patches/series | 2 + 2 files changed, 1458 insertions(+) create mode 100644 debian/patches/lump-debian-diffs create mode 100644 debian/patches/series diff --git a/debian/patches/lump-debian-diffs b/debian/patches/lump-debian-diffs new file mode 100644 index 0000000..f3e8896 --- /dev/null +++ b/debian/patches/lump-debian-diffs @@ -0,0 +1,1456 @@ +Description: + TODO: Put a short summary on the line above and replace this paragraph + with a longer explanation of this change. Complete the meta-information + with other relevant fields (see below for details). To make it easier, the + information below has been extracted from the changelog. Adjust it or drop + it. + . + pax (1:20090728-3) UNRELEASED; urgency=low + . + * switch to use of dh +Author: Bdale Garbee + +--- +The information above should follow the Patch Tagging Guidelines, please +checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here +are templates for supplementary fields that you might want to add: + +Origin: , +Bug: +Bug-Debian: http://bugs.debian.org/ +Bug-Ubuntu: https://launchpad.net/bugs/ +Forwarded: +Reviewed-By: +Last-Update: + +--- pax-20090728.orig/pax.c ++++ pax-20090728/pax.c +@@ -105,7 +105,7 @@ char *dirptr; /* destination dir in a c + char *ltmfrmt; /* -v locale time format (if any) */ + char *argv0; /* root of argv[0] */ + sigset_t s_mask; /* signal mask for cleanup critical sect */ +-FILE *listf = stderr; /* file pointer to print file list to */ ++FILE *listf; /* file pointer to print file list to */ + char *tempfile; /* tempfile to use for mkstemp(3) */ + char *tempbase; /* basename of tempfile to use for mkstemp(3) */ + +@@ -235,6 +235,12 @@ main(int argc, char **argv) + char *tmpdir; + size_t tdlen; + ++ /* ++ * On some systems, stderr is not a constant, so we initialize listf ++ * immediately to emulate the behavior. ++ */ ++ listf=stderr; ++ + /* + * Keep a reference to cwd, so we can always come back home. + */ +--- pax-20090728.orig/ar_subs.c ++++ pax-20090728/ar_subs.c +@@ -44,6 +44,7 @@ static const char rcsid[] = "$OpenBSD: a + + #include + #include ++#include + #include + #include + #include +--- pax-20090728.orig/cache.c ++++ pax-20090728/cache.c +@@ -200,7 +200,11 @@ name_uid(uid_t uid, int frc) + * No entry for this uid, we will add it + */ + if (!pwopn) { ++#ifdef DEBIAN ++ setpwent(); ++#else + setpassent(1); ++#endif + ++pwopn; + } + if (ptr == NULL) +@@ -266,7 +270,11 @@ name_gid(gid_t gid, int frc) + * No entry for this gid, we will add it + */ + if (!gropn) { ++#ifdef DEBIAN ++ setgrent(); ++#else + setgroupent(1); ++#endif + ++gropn; + } + if (ptr == NULL) +@@ -333,7 +341,11 @@ uid_name(char *name, uid_t *uid) + } + + if (!pwopn) { ++#ifdef DEBIAN ++ setpwent(); ++#else + setpassent(1); ++#endif + ++pwopn; + } + +@@ -396,7 +408,11 @@ gid_name(char *name, gid_t *gid) + } + + if (!gropn) { ++#ifdef DEBIAN ++ setgrent(); ++#else + setgroupent(1); ++#endif + ++gropn; + } + if (ptr == NULL) +--- pax-20090728.orig/pax.h ++++ pax-20090728/pax.h +@@ -242,3 +242,8 @@ typedef struct oplist { + #define OCT 8 + #define _PAX_ 1 + #define _TFILE_BASE "paxXXXXXXXXXX" ++ ++/* hack since we're pulling routines in from OpenBSD library to this dir */ ++size_t strlcpy(char *, const char *, size_t); ++char * vis(char *, int, int, int); ++ +--- pax-20090728.orig/sel_subs.c ++++ pax-20090728/sel_subs.c +@@ -44,6 +44,7 @@ static const char rcsid[] = "$OpenBSD: s + + #include + #include ++#include + #include + #include + #include +@@ -52,12 +53,14 @@ static const char rcsid[] = "$OpenBSD: s + #include + #include + #include +-#include ++#include + #include + #include "pax.h" + #include "sel_subs.h" + #include "extern.h" + ++#define TM_YEAR_BASE 1900 ++ + static int str_sec(const char *, time_t *); + static int usr_match(ARCHD *); + static int grp_match(ARCHD *); +--- /dev/null ++++ pax-20090728/types.h +@@ -0,0 +1,169 @@ ++/*- ++ * Copyright (c) 1982, 1986, 1991, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * (c) UNIX System Laboratories, Inc. ++ * All or some portions of this file are derived from material licensed ++ * to the University of California by American Telephone and Telegraph ++ * Co. or Unix System Laboratories, Inc. and are reproduced herein with ++ * the permission of UNIX System Laboratories, Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)types.h 8.4 (Berkeley) 1/21/94 ++ * $Id: types.h,v 1.1 2001-07-23 05:20:01 bdale Exp $ ++ */ ++ ++#ifndef _SYS_TYPES_H_ ++#define _SYS_TYPES_H_ ++ ++#include ++ ++/* Machine type dependent parameters. */ ++#include ++ ++#ifndef _POSIX_SOURCE ++typedef unsigned char u_char; ++typedef unsigned short u_short; ++typedef unsigned int u_int; ++typedef unsigned long u_long; ++typedef unsigned short ushort; /* Sys V compatibility */ ++typedef unsigned int uint; /* Sys V compatibility */ ++#endif ++ ++typedef unsigned long long u_quad_t; /* quads */ ++typedef long long quad_t; ++typedef quad_t * qaddr_t; ++ ++typedef char * caddr_t; /* core address */ ++typedef long daddr_t; /* disk address */ ++typedef unsigned long dev_t; /* device number */ ++typedef unsigned long fixpt_t; /* fixed point number */ ++typedef unsigned long gid_t; /* group id */ ++typedef unsigned long ino_t; /* inode number */ ++typedef unsigned short mode_t; /* permissions */ ++typedef unsigned short nlink_t; /* link count */ ++typedef quad_t off_t; /* file offset */ ++typedef long pid_t; /* process id */ ++typedef long segsz_t; /* segment size */ ++typedef long swblk_t; /* swap offset */ ++typedef unsigned long uid_t; /* user id */ ++ ++/* ++ * This belongs in unistd.h, but is placed here to ensure that programs ++ * casting the second parameter of lseek to off_t will get the correct ++ * version of lseek. ++ */ ++#ifndef KERNEL ++__BEGIN_DECLS ++off_t lseek __P((int, off_t, int)); ++__END_DECLS ++#endif ++ ++#ifndef _POSIX_SOURCE ++/* ++ * minor() gives a cookie instead of an index since we don't want to ++ * change the meanings of bits 0-15 or waste time and space shifting ++ * bits 16-31 for devices that don't use them. ++ */ ++#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ ++#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ ++#define makedev(x,y) ((dev_t)(((x)<<8) | (y))) /* create dev_t */ ++#endif ++ ++#include ++#include ++ ++#ifdef _BSD_CLOCK_T_ ++typedef _BSD_CLOCK_T_ clock_t; ++#undef _BSD_CLOCK_T_ ++#endif ++ ++#ifdef _BSD_SIZE_T_ ++typedef _BSD_SIZE_T_ size_t; ++#undef _BSD_SIZE_T_ ++#endif ++ ++#ifdef _BSD_SSIZE_T_ ++typedef _BSD_SSIZE_T_ ssize_t; ++#undef _BSD_SSIZE_T_ ++#endif ++ ++#ifdef _BSD_TIME_T_ ++typedef _BSD_TIME_T_ time_t; ++#undef _BSD_TIME_T_ ++#endif ++ ++#ifndef _POSIX_SOURCE ++#define NBBY 8 /* number of bits in a byte */ ++ ++/* ++ * Select uses bit masks of file descriptors in longs. These macros ++ * manipulate such bit fields (the filesystem macros use chars). ++ * FD_SETSIZE may be defined by the user, but the default here should ++ * be enough for most uses. ++ */ ++#ifndef FD_SETSIZE ++#define FD_SETSIZE 256 ++#endif ++ ++typedef long fd_mask; ++#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ ++ ++#ifndef howmany ++#define howmany(x, y) (((x)+((y)-1))/(y)) ++#endif ++ ++typedef struct fd_set { ++ fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; ++} fd_set; ++ ++#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) ++#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) ++#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) ++#define FD_COPY(f, t) bcopy(f, t, sizeof(*(f))) ++#define FD_ZERO(p) bzero(p, sizeof(*(p))) ++ ++#if defined(__STDC__) && defined(KERNEL) ++/* ++ * Forward structure declarations for function prototypes. We include the ++ * common structures that cross subsystem boundaries here; others are mostly ++ * used in the same place that the structure is defined. ++ */ ++struct proc; ++struct pgrp; ++struct ucred; ++struct rusage; ++struct file; ++struct buf; ++struct tty; ++struct uio; ++#endif ++ ++#endif /* !_POSIX_SOURCE */ ++#endif /* !_SYS_TYPES_H_ */ +--- /dev/null ++++ pax-20090728/strmode.h +@@ -0,0 +1,34 @@ ++/*- ++ * Copyright (c) 1990, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++void strmode(mode_t mode, char *p); +--- pax-20090728.orig/tar.c ++++ pax-20090728/tar.c +@@ -43,6 +43,7 @@ static const char rcsid[] = "$OpenBSD: t + #endif /* not lint */ + + #include ++#include + #include + #include + #include +@@ -763,6 +764,12 @@ ustar_rd(ARCHD *arcn, char *buf) + /* + * see if the filename is split into two parts. if, so joint the parts. + * we copy the prefix first and add a / between the prefix and name. ++ * ++ * the length passed to l_strncpy must be the length of the field ++ * being copied *from*, since these fields are NOT null terminated ++ * when full. the destination buffer is plenty big enough to hold ++ * the longest supported ustar path length, so there's no need ++ * to check against that. + */ + dest = arcn->name; + if (*(hd->prefix) != '\0') { +@@ -1072,6 +1079,15 @@ ustar_wr(ARCHD *arcn) + strncpy(hd->uname, name_uid(arcn->sb.st_uid, 0), sizeof(hd->uname)); + strncpy(hd->gname, name_gid(arcn->sb.st_gid, 0), sizeof(hd->gname)); + ++ /* ++ * Always add devmajor and devminor ++ */ ++ if (ul_oct ((u_long) MAJOR (arcn->sb.st_rdev), hd->devmajor, ++ sizeof (hd->devmajor), 3) || ++ ul_oct ((u_long) MINOR (arcn->sb.st_rdev), hd->devminor, ++ sizeof (hd->devminor), 3)) ++ goto out; ++ + /* + * calculate and store the checksum write the header to the archive + * return 0 tells the caller to now write the file data, 1 says no data +--- /dev/null ++++ pax-20090728/strmode.c +@@ -0,0 +1,147 @@ ++/*- ++ * Copyright (c) 1990, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#if defined(LIBC_SCCS) && !defined(lint) ++static char sccsid[] = "@(#)strmode.c 8.1 (Berkeley) 6/4/93"; ++#endif /* LIBC_SCCS and not lint */ ++ ++#include ++#include ++#include ++ ++void ++strmode(mode, p) ++ register mode_t mode; ++ register char *p; ++{ ++ /* print type */ ++ switch (mode & S_IFMT) { ++ case S_IFDIR: /* directory */ ++ *p++ = 'd'; ++ break; ++ case S_IFCHR: /* character special */ ++ *p++ = 'c'; ++ break; ++ case S_IFBLK: /* block special */ ++ *p++ = 'b'; ++ break; ++ case S_IFREG: /* regular */ ++ *p++ = '-'; ++ break; ++ case S_IFLNK: /* symbolic link */ ++ *p++ = 'l'; ++ break; ++ case S_IFSOCK: /* socket */ ++ *p++ = 's'; ++ break; ++#ifdef S_IFIFO ++ case S_IFIFO: /* fifo */ ++ *p++ = 'p'; ++ break; ++#endif ++ default: /* unknown */ ++ *p++ = '?'; ++ break; ++ } ++ /* usr */ ++ if (mode & S_IRUSR) ++ *p++ = 'r'; ++ else ++ *p++ = '-'; ++ if (mode & S_IWUSR) ++ *p++ = 'w'; ++ else ++ *p++ = '-'; ++ switch (mode & (S_IXUSR | S_ISUID)) { ++ case 0: ++ *p++ = '-'; ++ break; ++ case S_IXUSR: ++ *p++ = 'x'; ++ break; ++ case S_ISUID: ++ *p++ = 'S'; ++ break; ++ case S_IXUSR | S_ISUID: ++ *p++ = 's'; ++ break; ++ } ++ /* group */ ++ if (mode & S_IRGRP) ++ *p++ = 'r'; ++ else ++ *p++ = '-'; ++ if (mode & S_IWGRP) ++ *p++ = 'w'; ++ else ++ *p++ = '-'; ++ switch (mode & (S_IXGRP | S_ISGID)) { ++ case 0: ++ *p++ = '-'; ++ break; ++ case S_IXGRP: ++ *p++ = 'x'; ++ break; ++ case S_ISGID: ++ *p++ = 'S'; ++ break; ++ case S_IXGRP | S_ISGID: ++ *p++ = 's'; ++ break; ++ } ++ /* other */ ++ if (mode & S_IROTH) ++ *p++ = 'r'; ++ else ++ *p++ = '-'; ++ if (mode & S_IWOTH) ++ *p++ = 'w'; ++ else ++ *p++ = '-'; ++ switch (mode & (S_IXOTH | S_ISVTX)) { ++ case 0: ++ *p++ = '-'; ++ break; ++ case S_IXOTH: ++ *p++ = 'x'; ++ break; ++ case S_ISVTX: ++ *p++ = 'T'; ++ break; ++ case S_IXOTH | S_ISVTX: ++ *p++ = 't'; ++ break; ++ } ++ *p++ = ' '; /* will be a '+' if ACL's implemented */ ++ *p = '\0'; ++} +--- pax-20090728.orig/Makefile ++++ pax-20090728/Makefile +@@ -14,8 +14,25 @@ + PROG= pax + SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c\ + gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c tables.c\ +- tar.c tty_subs.c +-MAN= pax.1 tar.1 cpio.1 +-LINKS= ${BINDIR}/pax ${BINDIR}/tar ${BINDIR}/pax ${BINDIR}/cpio ++ tar.c tty_subs.c fgetln.c strmode.c strlcpy.c vis.c ++OBJS= $(SRCS:.c=.o) ++MAN= pax.1 + +-.include ++CFLAGS= -Wall -O2 -g -DLONG_OFF_T\ ++ -DNET2_STAT -D_PATH_DEFTAPE=\"/dev/rmt0\" -DDEBIAN -D_GNU_SOURCE ++ ++prefix=/usr ++ ++pax: $(OBJS) ++ $(CC) $(CFLAGS) $(OBJS) -o $@ $(LIBS) ++ ++clean: ++ $(RM) *.o ++ ++realclean: clean ++ $(RM) $(PROG) ++ ++install: ++ install -d -m 755 $(DESTDIR)$(prefix)/bin $(DESTDIR)$(prefix)/share/man/man1 ++ install -s -m 755 $(PROG) $(DESTDIR)$(prefix)/bin ++ install -m 644 $(MAN) $(DESTDIR)$(prefix)/share/man/man1 +--- /dev/null ++++ pax-20090728/strlcpy.c +@@ -0,0 +1,51 @@ ++/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ ++ ++/* ++ * Copyright (c) 1998 Todd C. Miller ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++/* ++ * Copy src to string dst of size siz. At most siz-1 characters ++ * will be copied. Always NUL terminates (unless siz == 0). ++ * Returns strlen(src); if retval >= siz, truncation occurred. ++ */ ++size_t ++strlcpy(char *dst, const char *src, size_t siz) ++{ ++ char *d = dst; ++ const char *s = src; ++ size_t n = siz; ++ ++ /* Copy as many bytes as will fit */ ++ if (n != 0) { ++ while (--n != 0) { ++ if ((*d++ = *s++) == '\0') ++ break; ++ } ++ } ++ ++ /* Not enough room in dst, add NUL and traverse rest of src */ ++ if (n == 0) { ++ if (siz != 0) ++ *d = '\0'; /* NUL-terminate dst */ ++ while (*s++) ++ ; ++ } ++ ++ return(s - src - 1); /* count does not include NUL */ ++} +--- pax-20090728.orig/ar_io.c ++++ pax-20090728/ar_io.c +@@ -1248,8 +1248,9 @@ ar_next(void) + + /* + * ar_start_gzip() +- * starts the gzip compression/decompression process as a child, using magic +- * to keep the fd the same in the calling function (parent). ++ * starts the compress, gzip or bzip2 compression/decompression process ++ * as a child, using magic to keep the fd the same in the calling function ++ * (parent). + */ + void + ar_start_gzip(int fd, const char *gzip_program, int wr) +--- /dev/null ++++ pax-20090728/Makefile.bsd +@@ -0,0 +1,34 @@ ++# $OpenBSD: Makefile,v 1.9 1997/09/21 11:35:28 deraadt Exp $ ++ ++# To install on versions prior to BSD 4.4 the following may have to be ++# defined with CFLAGS += ++# ++# -DNET2_STAT Use NET2 or older stat structure. The version of the ++# stat structure is easily determined by looking at the ++# basic type of an off_t (often defined in the file: ++# /usr/include/sys/types.h). If off_t is a long (and is ++# NOT A quad) then you must define NET2_STAT. ++# This define is important, as if you do have a quad_t ++# off_t and define NET2_STAT, pax will compile but will ++# NOT RUN PROPERLY. ++# ++# -DNET2_FTS Use the older NET2 fts. To identify the version, ++# examine the file: /usr/include/fts.h. If FTS_COMFOLLOW ++# is not defined then you must define NET2_FTS. ++# Pax may not compile if this not (un)defined properly. ++# ++# -DNET2_REGEX Use the older regexp.h not regex.h. The regex version ++# is determined by looking at the value returned by ++# regexec() (man 3 regexec). If regexec return a 1 for ++# success (and NOT a 0 for success) you have the older ++# regex routines and must define NET2_REGEX. ++# Pax may not compile if this not (un)defined properly. ++ ++PROG= pax ++SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c\ ++ gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c tables.c\ ++ tar.c tty_subs.c ++MAN= pax.1 tar.1 cpio.1 ++LINKS= ${BINDIR}/pax ${BINDIR}/tar ${BINDIR}/pax ${BINDIR}/cpio ++ ++.include +--- /dev/null ++++ pax-20090728/vis.c +@@ -0,0 +1,219 @@ ++/* $OpenBSD: vis.c,v 1.19 2005/09/01 17:15:49 millert Exp $ */ ++/*- ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#include ++#include ++#include ++#include ++#include "vis.h" ++ ++#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7') ++#define isvisible(c) \ ++ (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \ ++ (((c) != '*' && (c) != '?' && (c) != '[' && (c) != '#') || \ ++ (flag & VIS_GLOB) == 0) && isgraph((u_char)(c))) || \ ++ ((flag & VIS_SP) == 0 && (c) == ' ') || \ ++ ((flag & VIS_TAB) == 0 && (c) == '\t') || \ ++ ((flag & VIS_NL) == 0 && (c) == '\n') || \ ++ ((flag & VIS_SAFE) && ((c) == '\b' || \ ++ (c) == '\007' || (c) == '\r' || \ ++ isgraph((u_char)(c))))) ++ ++/* ++ * vis - visually encode characters ++ */ ++char * ++vis(char *dst, int c, int flag, int nextc) ++{ ++ if (isvisible(c)) { ++ *dst++ = c; ++ if (c == '\\' && (flag & VIS_NOSLASH) == 0) ++ *dst++ = '\\'; ++ *dst = '\0'; ++ return (dst); ++ } ++ ++ if (flag & VIS_CSTYLE) { ++ switch(c) { ++ case '\n': ++ *dst++ = '\\'; ++ *dst++ = 'n'; ++ goto done; ++ case '\r': ++ *dst++ = '\\'; ++ *dst++ = 'r'; ++ goto done; ++ case '\b': ++ *dst++ = '\\'; ++ *dst++ = 'b'; ++ goto done; ++ case '\a': ++ *dst++ = '\\'; ++ *dst++ = 'a'; ++ goto done; ++ case '\v': ++ *dst++ = '\\'; ++ *dst++ = 'v'; ++ goto done; ++ case '\t': ++ *dst++ = '\\'; ++ *dst++ = 't'; ++ goto done; ++ case '\f': ++ *dst++ = '\\'; ++ *dst++ = 'f'; ++ goto done; ++ case ' ': ++ *dst++ = '\\'; ++ *dst++ = 's'; ++ goto done; ++ case '\0': ++ *dst++ = '\\'; ++ *dst++ = '0'; ++ if (isoctal(nextc)) { ++ *dst++ = '0'; ++ *dst++ = '0'; ++ } ++ goto done; ++ } ++ } ++ if (((c & 0177) == ' ') || (flag & VIS_OCTAL) || ++ ((flag & VIS_GLOB) && (c == '*' || c == '?' || c == '[' || c == '#'))) { ++ *dst++ = '\\'; ++ *dst++ = ((u_char)c >> 6 & 07) + '0'; ++ *dst++ = ((u_char)c >> 3 & 07) + '0'; ++ *dst++ = ((u_char)c & 07) + '0'; ++ goto done; ++ } ++ if ((flag & VIS_NOSLASH) == 0) ++ *dst++ = '\\'; ++ if (c & 0200) { ++ c &= 0177; ++ *dst++ = 'M'; ++ } ++ if (iscntrl((u_char)c)) { ++ *dst++ = '^'; ++ if (c == 0177) ++ *dst++ = '?'; ++ else ++ *dst++ = c + '@'; ++ } else { ++ *dst++ = '-'; ++ *dst++ = c; ++ } ++done: ++ *dst = '\0'; ++ return (dst); ++} ++ ++/* ++ * strvis, strnvis, strvisx - visually encode characters from src into dst ++ * ++ * Dst must be 4 times the size of src to account for possible ++ * expansion. The length of dst, not including the trailing NULL, ++ * is returned. ++ * ++ * Strnvis will write no more than siz-1 bytes (and will NULL terminate). ++ * The number of bytes needed to fully encode the string is returned. ++ * ++ * Strvisx encodes exactly len bytes from src into dst. ++ * This is useful for encoding a block of data. ++ */ ++int ++strvis(char *dst, const char *src, int flag) ++{ ++ char c; ++ char *start; ++ ++ for (start = dst; (c = *src);) ++ dst = vis(dst, c, flag, *++src); ++ *dst = '\0'; ++ return (dst - start); ++} ++ ++int ++strnvis(char *dst, const char *src, size_t siz, int flag) ++{ ++ char *start, *end; ++ char tbuf[5]; ++ int c, i; ++ ++ i = 0; ++ for (start = dst, end = start + siz - 1; (c = *src) && dst < end; ) { ++ if (isvisible(c)) { ++ i = 1; ++ *dst++ = c; ++ if (c == '\\' && (flag & VIS_NOSLASH) == 0) { ++ /* need space for the extra '\\' */ ++ if (dst < end) ++ *dst++ = '\\'; ++ else { ++ dst--; ++ i = 2; ++ break; ++ } ++ } ++ src++; ++ } else { ++ i = vis(tbuf, c, flag, *++src) - tbuf; ++ if (dst + i <= end) { ++ memcpy(dst, tbuf, i); ++ dst += i; ++ } else { ++ src--; ++ break; ++ } ++ } ++ } ++ if (siz > 0) ++ *dst = '\0'; ++ if (dst + i > end) { ++ /* adjust return value for truncation */ ++ while ((c = *src)) ++ dst += vis(tbuf, c, flag, *++src) - tbuf; ++ } ++ return (dst - start); ++} ++ ++int ++strvisx(char *dst, const char *src, size_t len, int flag) ++{ ++ char c; ++ char *start; ++ ++ for (start = dst; len > 1; len--) { ++ c = *src; ++ dst = vis(dst, c, flag, *++src); ++ } ++ if (len) ++ dst = vis(dst, *src, flag, '\0'); ++ *dst = '\0'; ++ return (dst - start); ++} +--- pax-20090728.orig/gen_subs.c ++++ pax-20090728/gen_subs.c +@@ -43,19 +43,23 @@ static const char rcsid[] = "$OpenBSD: g + #endif /* not lint */ + + #include ++#include + #include ++#include + #include + #include + #include +-#include ++#include "tzfile.h" + #include + #include + #include + #include +-#include ++#include "vis.h" + #include "pax.h" + #include "extern.h" + ++#include "strmode.h" ++ + /* + * a collection of general purpose subroutines used by pax + */ +@@ -65,6 +69,9 @@ static const char rcsid[] = "$OpenBSD: g + */ + #define MODELEN 20 + #define DATELEN 64 ++#define DAYSPERNYEAR 365 ++/* #define SECSPERDAY 86400 */ ++/* #define VIS_CSTYLE 0 */ + #define SIXMONTHS ((DAYSPERNYEAR / 2) * SECSPERDAY) + #define CURFRMT "%b %e %H:%M" + #define OLDFRMT "%b %e %Y" +@@ -205,7 +212,7 @@ safe_print(const char *str, FILE *fp) + /* + * if printing to a tty, use vis(3) to print special characters. + */ +- if (isatty(fileno(fp))) { ++ if (0 && isatty(fileno(fp))) { + for (cp = str; *cp; cp++) { + (void)vis(visbuf, cp[0], VIS_CSTYLE, cp[1]); + (void)fputs(visbuf, fp); +--- pax-20090728.orig/pax.1 ++++ pax-20090728/pax.1 +@@ -1143,7 +1143,7 @@ completes it will exit with a non-zero e + The + .Nm + utility is compliant with the +-.St -p1003.1-2008 ++POSIX 1003.1-2008 + specification. + .Pp + The flags +--- /dev/null ++++ pax-20090728/fgetln.c +@@ -0,0 +1,134 @@ ++/* fgetline: Read one line of input and return a pointer to ++ that line. Necessary space is obtained from malloc. ++ (char *) NULL is returned on EOF. ++ ++ Andy Dougherty doughera@lafcol.lafayette.edu ++ Dept. of Physics ++ Lafayette College, Easton PA 18042 ++ ++ Successive calls to fgetline() overwrite the original buffer. ++ If you want to preserve the data, you must do something like ++ the following (the +1's are for '\0' characters): ++ ++ tmp = fgetline(fp); ++ ntmp = Ealloc(strlen(tmp)+1, sizeof(char)); ++ strncpy(ntmp, tmp, strlen(tmp)+1); ++ ++ A line is defined as all characters up to (and including) the next ++ newline character or end of file. ++ The string is terminated by a NULL character. ++ ++ * Version 1.1 A. Dougherty 2/7/94 ++ Don't call realloc() just to save a few bytes. ++ Check return value from realloc(). (NULL is allowed under POSIX, ++ though I've never hit it.) ++ ++ * Version 1.0 A. Dougherty 2/27/91 ++ ++ This fgetline implementation was written by Andrew Dougherty ++ . I hearby place it in the public domain. ++ As a courtesy, please leave my name attached to the source. ++ ++ This code comes with no warranty whatsoever, and I take no ++ responsibility for any consequences of its use. ++*/ ++ ++/* Algorithm: A local static buffer "buf" is maintained. The current ++ length (space available) is in the static variable "avail". ++ Read in characters into this buffer. If need more space, call ++ malloc(). ++ ++ Aside: We have computed strlen(buf) in this function. It ++ seems a shame to throw it away. ++*/ ++ ++#include ++#include ++#include ++ ++#define LINELEN 128 /* A decent guess that should only rarely be ++ overwritten. ++ */ ++#define OK_TO_WASTE 512 /* Don't bother trying to realloc() back to ++ a smaller buffer if you'd only end up ++ wasting OK_TO_WASTE bytes. ++ */ ++ ++void *Emalloc(size_t len) /* David */ ++{ ++ char *p; ++ ++ p=malloc(len); ++ if (p == NULL) { ++ perror("out of memory (Emalloc)"); ++ exit(2); ++ ++ } ++ return p; ++} ++ ++void *Erealloc(char *p, size_t len) /* David */ ++{ ++ p=realloc(p, len); ++ if (p == NULL) { ++ perror("out of memory (Erealloc)"); ++ exit(2); ++ ++ } ++ return p; ++} ++ ++char * ++fgetln(FILE *fp, size_t *length) ++ { ++ static char *buf = NULL; ++ static size_t avail = 0; ++ int c; ++ char *p; /* Temporary used for reducing length. */ ++ int len; ++ ++ if (avail == 0) ++ { ++ buf = (char *) Emalloc(LINELEN * sizeof(char)); ++ avail = LINELEN; ++ } ++ ++ len = 0; /* Current length */ ++ ++ while ((c=getc(fp)) != EOF) ++ { ++ if (len >= avail) /* Need to ask for space */ ++ { ++ avail += LINELEN; /* Maybe avail *= 2 would be better */ ++ buf = (char *) Erealloc((void *) buf, avail * sizeof(char)); ++ } ++ buf[len] = c; ++ len++; ++ if (c == '\n') ++ break; ++ } ++ ++ if (c == EOF && len == 0) ++ return (char *) NULL; ++ ++ /* Add terminating '\0' character */ ++ if (len >= avail) /* Need 1 more space */ ++ buf = (char *) Erealloc((void *) buf, (len+1) * sizeof(char)); ++ buf[len] = '\0'; ++ ++ /* Should we bother to try reclaiming memory? (Otherwise, this ++ function will hold onto enough memory to hold the longest ++ line for the entire duration of the program.) ++ */ ++ if (avail - len > OK_TO_WASTE) ++ { ++ p = (char *) Erealloc((void *) buf, (len+1) * sizeof(char)); ++ if (p != NULL) ++ { ++ buf = p; ++ avail = len + 1; ++ } ++ } ++ *length=len-1; ++ return buf; ++ } +--- pax-20090728.orig/cpio.c ++++ pax-20090728/cpio.c +@@ -43,6 +43,7 @@ static const char rcsid[] = "$OpenBSD: c + #endif /* not lint */ + + #include ++#include + #include + #include + #include +--- /dev/null ++++ pax-20090728/tzfile.h +@@ -0,0 +1,158 @@ ++/* ++ * Ported to Linux's Second Extended File System as part of the ++ * dump and restore backup suit ++ * Remy Card , 1994, 1995 ++ * ++ */ ++ ++/* ++ * Copyright (c) 1988, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * This code is derived from software contributed to Berkeley by ++ * Arthur David Olson of the National Cancer Institute. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)tzfile.h 8.1 (Berkeley) 6/2/93 ++ */ ++ ++#ifndef _TZFILE_H_ ++#define _TZFILE_H_ ++ ++/* ++ * Information about time zone files. ++ */ ++ /* Time zone object file directory */ ++#define TZDIR "/usr/share/zoneinfo" ++#define TZDEFAULT "/etc/localtime" ++#define TZDEFRULES "posixrules" ++ ++/* ++** Each file begins with. . . ++*/ ++ ++struct tzhead { ++ char tzh_reserved[24]; /* reserved for future use */ ++ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ ++ char tzh_leapcnt[4]; /* coded number of leap seconds */ ++ char tzh_timecnt[4]; /* coded number of transition times */ ++ char tzh_typecnt[4]; /* coded number of local time types */ ++ char tzh_charcnt[4]; /* coded number of abbr. chars */ ++}; ++ ++/* ++** . . .followed by. . . ++** ++** tzh_timecnt (char [4])s coded transition times a la time(2) ++** tzh_timecnt (unsigned char)s types of local time starting at above ++** tzh_typecnt repetitions of ++** one (char [4]) coded GMT offset in seconds ++** one (unsigned char) used to set tm_isdst ++** one (unsigned char) that's an abbreviation list index ++** tzh_charcnt (char)s '\0'-terminated zone abbreviations ++** tzh_leapcnt repetitions of ++** one (char [4]) coded leap second transition times ++** one (char [4]) total correction after above ++** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition ++** time is standard time, if FALSE, ++** transition time is wall clock time ++** if absent, transition times are ++** assumed to be wall clock time ++*/ ++ ++/* ++** In the current implementation, "tzset()" refuses to deal with files that ++** exceed any of the limits below. ++*/ ++ ++/* ++** The TZ_MAX_TIMES value below is enough to handle a bit more than a ++** year's worth of solar time (corrected daily to the nearest second) or ++** 138 years of Pacific Presidential Election time ++** (where there are three time zone transitions every fourth year). ++*/ ++#define TZ_MAX_TIMES 370 ++ ++#define NOSOLAR /* 4BSD doesn't currently handle solar time */ ++ ++#ifndef NOSOLAR ++#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ ++#else ++#define TZ_MAX_TYPES 10 /* Maximum number of local time types */ ++#endif ++ ++#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ ++ ++#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ ++ ++#define SECSPERMIN 60 ++#define MINSPERHOUR 60 ++#define HOURSPERDAY 24 ++#define DAYSPERWEEK 7 ++#define DAYSPERNYEAR 365 ++#define DAYSPERLYEAR 366 ++#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) ++#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) ++#define MONSPERYEAR 12 ++ ++#define TM_SUNDAY 0 ++#define TM_MONDAY 1 ++#define TM_TUESDAY 2 ++#define TM_WEDNESDAY 3 ++#define TM_THURSDAY 4 ++#define TM_FRIDAY 5 ++#define TM_SATURDAY 6 ++ ++#define TM_JANUARY 0 ++#define TM_FEBRUARY 1 ++#define TM_MARCH 2 ++#define TM_APRIL 3 ++#define TM_MAY 4 ++#define TM_JUNE 5 ++#define TM_JULY 6 ++#define TM_AUGUST 7 ++#define TM_SEPTEMBER 8 ++#define TM_OCTOBER 9 ++#define TM_NOVEMBER 10 ++#define TM_DECEMBER 11 ++ ++#define TM_YEAR_BASE 1900 ++ ++#define EPOCH_YEAR 1970 ++#define EPOCH_WDAY TM_THURSDAY ++ ++/* ++** Accurate only for the past couple of centuries; ++** that will probably do. ++*/ ++ ++#define isleap(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0) ++ ++#endif /* !_TZFILE_H_ */ +--- /dev/null ++++ pax-20090728/vis.h +@@ -0,0 +1,90 @@ ++/* $OpenBSD: vis.h,v 1.11 2005/08/09 19:38:31 millert Exp $ */ ++/* $NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $ */ ++ ++/*- ++ * Copyright (c) 1990 The Regents of the University of California. ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)vis.h 5.9 (Berkeley) 4/3/91 ++ */ ++ ++#ifndef _VIS_H_ ++#define _VIS_H_ ++ ++/* ++ * to select alternate encoding format ++ */ ++#define VIS_OCTAL 0x01 /* use octal \ddd format */ ++#define VIS_CSTYLE 0x02 /* use \[nrft0..] where appropriate */ ++ ++/* ++ * to alter set of characters encoded (default is to encode all ++ * non-graphic except space, tab, and newline). ++ */ ++#define VIS_SP 0x04 /* also encode space */ ++#define VIS_TAB 0x08 /* also encode tab */ ++#define VIS_NL 0x10 /* also encode newline */ ++#define VIS_WHITE (VIS_SP | VIS_TAB | VIS_NL) ++#define VIS_SAFE 0x20 /* only encode "unsafe" characters */ ++ ++/* ++ * other ++ */ ++#define VIS_NOSLASH 0x40 /* inhibit printing '\' */ ++#define VIS_GLOB 0x100 /* encode glob(3) magics and '#' */ ++ ++/* ++ * unvis return codes ++ */ ++#define UNVIS_VALID 1 /* character valid */ ++#define UNVIS_VALIDPUSH 2 /* character valid, push back passed char */ ++#define UNVIS_NOCHAR 3 /* valid sequence, no character produced */ ++#define UNVIS_SYNBAD -1 /* unrecognized escape sequence */ ++#define UNVIS_ERROR -2 /* decoder in unknown state (unrecoverable) */ ++ ++/* ++ * unvis flags ++ */ ++#define UNVIS_END 1 /* no more characters */ ++ ++#include ++ ++__BEGIN_DECLS ++char *vis(char *, int, int, int); ++int strvis(char *, const char *, int); ++int strnvis(char *, const char *, size_t, int) ++ __attribute__ ((__bounded__(__string__,1,3))); ++int strvisx(char *, const char *, size_t, int) ++ __attribute__ ((__bounded__(__string__,1,3))); ++int strunvis(char *, const char *); ++int unvis(char *, char, int *, int); ++ssize_t strnunvis(char *, const char *, size_t) ++ __attribute__ ((__bounded__(__string__,1,3))); ++ ++__END_DECLS ++ ++#endif /* !_VIS_H_ */ +--- /dev/null ++++ pax-20090728/fgetln.h +@@ -0,0 +1,17 @@ ++/* fgetline: Read one line of input and return a pointer to ++ that line. Necessary space is obtained from malloc. ++ (char *) NULL is returned on EOF. ++ ++ Andy Dougherty doughera@lafcol.lafayette.edu ++ Dept. of Physics ++ Lafayette College, Easton PA 18042 ++ ++ This fgetline implementation was written by Andrew Dougherty ++ . I hearby place it in the public domain. ++ As a courtesy, please leave my name attached to the source. ++ ++ This code comes with no warranty whatsoever, and I take no ++ responsibility for any consequences of its use. ++*/ ++ ++char *fgetln(FILE *fp, size_t *length); +--- pax-20090728.orig/options.c ++++ pax-20090728/options.c +@@ -60,6 +60,8 @@ static const char rcsid[] = "$OpenBSD: o + #include "tar.h" + #include "extern.h" + ++#include "fgetln.h" /* added, David */ ++ + /* + * Routines which handle command line options + */ +@@ -72,7 +74,7 @@ static int no_op(void); + static void printflg(unsigned int); + static int c_frmt(const void *, const void *); + static off_t str_offt(char *); +-static char *getline(FILE *fp); ++static char *bsd_getline(FILE *fp); + static void pax_options(int, char **); + static void pax_usage(void); + static void tar_options(int, char **); +@@ -882,7 +884,7 @@ tar_options(int argc, char **argv) + paxwarn(1, "Unable to open file '%s' for read", file); + tar_usage(); + } +- while ((str = getline(fp)) != NULL) { ++ while ((str = bsd_getline(fp)) != NULL) { + if (pat_add(str, dir) < 0) + tar_usage(); + sawpat = 1; +@@ -961,7 +963,7 @@ tar_options(int argc, char **argv) + paxwarn(1, "Unable to open file '%s' for read", file); + tar_usage(); + } +- while ((str = getline(fp)) != NULL) { ++ while ((str = bsd_getline(fp)) != NULL) { + if (ftree_add(str, 0) < 0) + tar_usage(); + } +@@ -1183,7 +1185,7 @@ cpio_options(int argc, char **argv) + paxwarn(1, "Unable to open file '%s' for read", optarg); + cpio_usage(); + } +- while ((str = getline(fp)) != NULL) { ++ while ((str = bsd_getline(fp)) != NULL) { + pat_add(str, NULL); + } + fclose(fp); +@@ -1282,7 +1284,7 @@ cpio_options(int argc, char **argv) + * no read errors allowed on updates/append operation! + */ + maxflt = 0; +- while ((str = getline(stdin)) != NULL) { ++ while ((str = bsd_getline(stdin)) != NULL) { + ftree_add(str, 0); + } + if (getline_error) { +@@ -1459,7 +1461,7 @@ str_offt(char *val) + if ((num == LONG_MAX) || (num <= 0) || (expr == val)) + # else + num = strtoq(val, &expr, 0); +- if ((num == QUAD_MAX) || (num <= 0) || (expr == val)) ++ if ((num == LLONG_MAX) || (num <= 0) || (expr == val)) + # endif + return(0); + +@@ -1511,7 +1513,7 @@ str_offt(char *val) + } + + char * +-getline(FILE *f) ++bsd_getline(FILE *f) + { + char *name, *temp; + size_t len; diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..3ff4c7b --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,2 @@ +lump-debian-diffs +series -- 2.30.2