summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2003-06-26 00:10:19 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2003-06-26 00:10:19 +0000
commit9e9afca8e1dfa8c957cf7ef77140a25e15ec2cf0 (patch)
tree64079a8f4b473ed557c9689868bbd8ab9059f443
parent6a21bbfaba9f2366ca923756df0aec2af847bd44 (diff)
protos. this requires changing the api for the *trail() functions a bit
-rw-r--r--bin/pax/ar_subs.c10
-rw-r--r--bin/pax/cpio.c6
-rw-r--r--bin/pax/extern.h6
-rw-r--r--bin/pax/options.c6
-rw-r--r--bin/pax/pax.h148
-rw-r--r--bin/pax/tar.c6
6 files changed, 93 insertions, 89 deletions
diff --git a/bin/pax/ar_subs.c b/bin/pax/ar_subs.c
index 74955f81c8b..caedfcbc948 100644
--- a/bin/pax/ar_subs.c
+++ b/bin/pax/ar_subs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ar_subs.c,v 1.24 2003/06/02 23:32:08 millert Exp $ */
+/* $OpenBSD: ar_subs.c,v 1.25 2003/06/26 00:10:17 deraadt Exp $ */
/* $NetBSD: ar_subs.c,v 1.5 1995/03/21 09:07:06 cgd Exp $ */
/*-
@@ -38,7 +38,7 @@
#if 0
static const char sccsid[] = "@(#)ar_subs.c 8.2 (Berkeley) 4/18/94";
#else
-static const char rcsid[] = "$OpenBSD: ar_subs.c,v 1.24 2003/06/02 23:32:08 millert Exp $";
+static const char rcsid[] = "$OpenBSD: ar_subs.c,v 1.25 2003/06/26 00:10:17 deraadt Exp $";
#endif
#endif /* not lint */
@@ -383,7 +383,7 @@ wr_archive(ARCHD *arcn, int is_app)
int hlk;
int wr_one;
off_t cnt;
- int (*wrf)();
+ int (*wrf)(ARCHD *);
int fd = -1;
time_t now;
@@ -1072,7 +1072,7 @@ next_head(ARCHD *arcn)
/*
* this format has trailers outside of valid headers
*/
- if ((ret = (*frmt->trail)(hdbuf,in_resync,&cnt)) == 0){
+ if ((ret = (*frmt->trail)(arcn,hdbuf,in_resync,&cnt)) == 0){
/*
* valid trailer found, drain input as required
*/
@@ -1119,7 +1119,7 @@ next_head(ARCHD *arcn)
* the header. NOTE: the parameters are different than trailer routines
* which encode trailers outside of the header!
*/
- if (frmt->inhead && ((*frmt->trail)(arcn) == 0)) {
+ if (frmt->inhead && ((*frmt->trail)(arcn,NULL,0,NULL) == 0)) {
/*
* valid trailer found, drain input as required
*/
diff --git a/bin/pax/cpio.c b/bin/pax/cpio.c
index f5cdf759dd2..2bfb44ee9e8 100644
--- a/bin/pax/cpio.c
+++ b/bin/pax/cpio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cpio.c,v 1.15 2003/06/02 23:32:08 millert Exp $ */
+/* $OpenBSD: cpio.c,v 1.16 2003/06/26 00:10:17 deraadt Exp $ */
/* $NetBSD: cpio.c,v 1.5 1995/03/21 09:07:13 cgd Exp $ */
/*-
@@ -38,7 +38,7 @@
#if 0
static const char sccsid[] = "@(#)cpio.c 8.1 (Berkeley) 5/31/93";
#else
-static const char rcsid[] = "$OpenBSD: cpio.c,v 1.15 2003/06/02 23:32:08 millert Exp $";
+static const char rcsid[] = "$OpenBSD: cpio.c,v 1.16 2003/06/26 00:10:17 deraadt Exp $";
#endif
#endif /* not lint */
@@ -92,7 +92,7 @@ cpio_strd(void)
*/
int
-cpio_trail(ARCHD *arcn)
+cpio_trail(ARCHD *arcn, char *notused, int notused2, int *notused3)
{
/*
* look for trailer id in file we are about to process
diff --git a/bin/pax/extern.h b/bin/pax/extern.h
index 91f9f88b6fc..f8632177e07 100644
--- a/bin/pax/extern.h
+++ b/bin/pax/extern.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: extern.h,v 1.26 2003/06/13 17:51:14 millert Exp $ */
+/* $OpenBSD: extern.h,v 1.27 2003/06/26 00:10:17 deraadt Exp $ */
/* $NetBSD: extern.h,v 1.5 1996/03/26 23:54:16 mrg Exp $ */
/*-
@@ -113,7 +113,7 @@ int gid_name(char *, gid_t *);
* cpio.c
*/
int cpio_strd(void);
-int cpio_trail(ARCHD *);
+int cpio_trail(ARCHD *, char *, int, int *);
int cpio_endwr(void);
int cpio_id(char *, int);
int cpio_rd(ARCHD *, char *);
@@ -280,7 +280,7 @@ u_int st_hash(char *, int, int);
extern char *gnu_hack_string;
int tar_endwr(void);
off_t tar_endrd(void);
-int tar_trail(char *, int, int *);
+int tar_trail(ARCHD *, char *, int, int *);
int tar_id(char *, int);
int tar_opt(void);
int tar_rd(ARCHD *, char *);
diff --git a/bin/pax/options.c b/bin/pax/options.c
index 2aaf3f74230..214e5ec7daf 100644
--- a/bin/pax/options.c
+++ b/bin/pax/options.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: options.c,v 1.58 2003/06/13 17:51:14 millert Exp $ */
+/* $OpenBSD: options.c,v 1.59 2003/06/26 00:10:17 deraadt Exp $ */
/* $NetBSD: options.c,v 1.6 1996/03/26 23:54:18 mrg Exp $ */
/*-
@@ -38,7 +38,7 @@
#if 0
static const char sccsid[] = "@(#)options.c 8.2 (Berkeley) 4/18/94";
#else
-static const char rcsid[] = "$OpenBSD: options.c,v 1.58 2003/06/13 17:51:14 millert Exp $";
+static const char rcsid[] = "$OpenBSD: options.c,v 1.59 2003/06/26 00:10:17 deraadt Exp $";
#endif
#endif /* not lint */
@@ -979,6 +979,8 @@ tar_options(int argc, char **argv)
}
}
+int mkpath(char *);
+
int
mkpath(path)
char *path;
diff --git a/bin/pax/pax.h b/bin/pax/pax.h
index 7b791e13e54..ff0a14f961a 100644
--- a/bin/pax/pax.h
+++ b/bin/pax/pax.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pax.h,v 1.14 2003/06/02 23:32:09 millert Exp $ */
+/* $OpenBSD: pax.h,v 1.15 2003/06/26 00:10:17 deraadt Exp $ */
/* $NetBSD: pax.h,v 1.3 1995/03/21 09:07:41 cgd Exp $ */
/*-
@@ -71,6 +71,63 @@
#define ISPIPE 4 /* pipe/socket */
/*
+ * Pattern matching structure
+ *
+ * Used to store command line patterns
+ */
+typedef struct pattern {
+ char *pstr; /* pattern to match, user supplied */
+ char *pend; /* end of a prefix match */
+ char *chdname; /* the dir to change to if not NULL. */
+ int plen; /* length of pstr */
+ int flgs; /* processing/state flags */
+#define MTCH 0x1 /* pattern has been matched */
+#define DIR_MTCH 0x2 /* pattern matched a directory */
+ struct pattern *fow; /* next pattern */
+} PATTERN;
+
+/*
+ * General Archive Structure (used internal to pax)
+ *
+ * This structure is used to pass information about archive members between
+ * the format independent routines and the format specific routines. When
+ * new archive formats are added, they must accept requests and supply info
+ * encoded in a structure of this type. The name fields are declared statically
+ * here, as there is only ONE of these floating around, size is not a major
+ * consideration. Eventually converting the name fields to a dynamic length
+ * may be required if and when the supporting operating system removes all
+ * restrictions on the length of pathnames it will resolve.
+ */
+typedef struct {
+ int nlen; /* file name length */
+ char name[PAXPATHLEN+1]; /* file name */
+ int ln_nlen; /* link name length */
+ char ln_name[PAXPATHLEN+1]; /* name to link to (if any) */
+ char *org_name; /* orig name in file system */
+ PATTERN *pat; /* ptr to pattern match (if any) */
+ struct stat sb; /* stat buffer see stat(2) */
+ off_t pad; /* bytes of padding after file xfer */
+ off_t skip; /* bytes of real data after header */
+ /* IMPORTANT. The st_size field does */
+ /* not always indicate the amount of */
+ /* data following the header. */
+ u_long crc; /* file crc */
+ int type; /* type of file node */
+#define PAX_DIR 1 /* directory */
+#define PAX_CHR 2 /* character device */
+#define PAX_BLK 3 /* block device */
+#define PAX_REG 4 /* regular file */
+#define PAX_SLK 5 /* symbolic link */
+#define PAX_SCK 6 /* socket */
+#define PAX_FIF 7 /* fifo */
+#define PAX_HLK 8 /* hard link */
+#define PAX_HRG 9 /* hard link to a regular file */
+#define PAX_CTG 10 /* high performance file */
+#define PAX_GLL 11 /* GNU long symlink */
+#define PAX_GLF 12 /* GNU long file */
+} ARCHD;
+
+/*
* Format Specific Routine Table
*
* The format specific routine table allows new archive formats to be quickly
@@ -106,13 +163,13 @@ typedef struct {
int inhead; /* is the trailer encoded in a valid header? */
/* if not, trailers are assumed to be found */
/* in invalid headers (i.e like tar) */
- int (*id)(); /* checks if a buffer is a valid header */
- /* returns 1 if it is, o.w. returns a 0 */
- int (*st_rd)(); /* initialize routine for read. so format */
+ int (*id)(char *, /* checks if a buffer is a valid header */
+ int); /* returns 1 if it is, o.w. returns a 0 */
+ int (*st_rd)(void); /* initialize routine for read. so format */
/* can set up tables etc before it starts */
/* reading an archive */
- int (*rd)(); /* read header routine. passed a pointer to */
- /* ARCHD. It must extract the info from the */
+ int (*rd)(ARCHD *, /* read header routine. passed a pointer to */
+ char *); /* ARCHD. It must extract the info from the */
/* format and store it in the ARCHD struct. */
/* This routine is expected to fill all the */
/* fields in the ARCHD (including stat buf) */
@@ -123,12 +180,12 @@ typedef struct {
/* padding and the number of bytes of data */
/* which follow the header. This info is */
/* used skip to the next file header */
- off_t (*end_rd)(); /* read cleanup. Allows format to clean up */
+ off_t (*end_rd)(void); /* read cleanup. Allows format to clean up */
/* and MUST RETURN THE LENGTH OF THE TRAILER */
/* RECORD (so append knows how many bytes */
/* to move back to rewrite the trailer) */
- int (*st_wr)(); /* initialize routine for write operations */
- int (*wr)(); /* write archive header. Passed an ARCHD */
+ int (*st_wr)(void); /* initialize routine for write operations */
+ int (*wr)(ARCHD *); /* write archive header. Passed an ARCHD */
/* filled with the specs on the next file to */
/* archived. Returns a 1 if no file data is */
/* is to be stored; 0 if file data is to be */
@@ -138,81 +195,26 @@ typedef struct {
/* the proper padding can be added after */
/* file data. This routine must NEVER write */
/* a flawed archive header. */
- int (*end_wr)(); /* end write. write the trailer and do any */
+ int (*end_wr)(void); /* end write. write the trailer and do any */
/* other format specific functions needed */
/* at the ecnd of a archive write */
- int (*trail)(); /* returns 0 if a valid trailer, -1 if not */
- /* For formats which encode the trailer */
- /* outside of a valid header, a return value */
+ int (*trail)(ARCHD *, /* returns 0 if a valid trailer, -1 if not */
+ char *, int, /* For formats which encode the trailer */
+ int *); /* outside of a valid header, a return value */
/* of 1 indicates that the block passed to */
/* it can never contain a valid header (skip */
/* this block, no point in looking at it) */
/* CAUTION: parameters to this function are */
/* different for trailers inside or outside */
/* of headers. See get_head() for details */
- int (*rd_data)(); /* read/process file data from the archive */
- int (*wr_data)(); /* write/process file data to the archive */
- int (*options)(); /* process format specific options (-o) */
+ int (*rd_data)(ARCHD *, /* read/process file data from the archive */
+ int, off_t *);
+ int (*wr_data)(ARCHD *, /* write/process file data to the archive */
+ int, off_t *);
+ int (*options)(void); /* process format specific options (-o) */
} FSUB;
/*
- * Pattern matching structure
- *
- * Used to store command line patterns
- */
-typedef struct pattern {
- char *pstr; /* pattern to match, user supplied */
- char *pend; /* end of a prefix match */
- char *chdname; /* the dir to change to if not NULL. */
- int plen; /* length of pstr */
- int flgs; /* processing/state flags */
-#define MTCH 0x1 /* pattern has been matched */
-#define DIR_MTCH 0x2 /* pattern matched a directory */
- struct pattern *fow; /* next pattern */
-} PATTERN;
-
-/*
- * General Archive Structure (used internal to pax)
- *
- * This structure is used to pass information about archive members between
- * the format independent routines and the format specific routines. When
- * new archive formats are added, they must accept requests and supply info
- * encoded in a structure of this type. The name fields are declared statically
- * here, as there is only ONE of these floating around, size is not a major
- * consideration. Eventually converting the name fields to a dynamic length
- * may be required if and when the supporting operating system removes all
- * restrictions on the length of pathnames it will resolve.
- */
-typedef struct {
- int nlen; /* file name length */
- char name[PAXPATHLEN+1]; /* file name */
- int ln_nlen; /* link name length */
- char ln_name[PAXPATHLEN+1]; /* name to link to (if any) */
- char *org_name; /* orig name in file system */
- PATTERN *pat; /* ptr to pattern match (if any) */
- struct stat sb; /* stat buffer see stat(2) */
- off_t pad; /* bytes of padding after file xfer */
- off_t skip; /* bytes of real data after header */
- /* IMPORTANT. The st_size field does */
- /* not always indicate the amount of */
- /* data following the header. */
- u_long crc; /* file crc */
- int type; /* type of file node */
-#define PAX_DIR 1 /* directory */
-#define PAX_CHR 2 /* character device */
-#define PAX_BLK 3 /* block device */
-#define PAX_REG 4 /* regular file */
-#define PAX_SLK 5 /* symbolic link */
-#define PAX_SCK 6 /* socket */
-#define PAX_FIF 7 /* fifo */
-#define PAX_HLK 8 /* hard link */
-#define PAX_HRG 9 /* hard link to a regular file */
-#define PAX_CTG 10 /* high performance file */
-#define PAX_GLL 11 /* GNU long symlink */
-#define PAX_GLF 12 /* GNU long file */
-} ARCHD;
-
-/*
* Format Specific Options List
*
* Used to pass format options to the format options handler
diff --git a/bin/pax/tar.c b/bin/pax/tar.c
index 8acaa4c73dc..b8b4eb3662c 100644
--- a/bin/pax/tar.c
+++ b/bin/pax/tar.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tar.c,v 1.30 2003/06/02 23:32:09 millert Exp $ */
+/* $OpenBSD: tar.c,v 1.31 2003/06/26 00:10:18 deraadt Exp $ */
/* $NetBSD: tar.c,v 1.5 1995/03/21 09:07:49 cgd Exp $ */
/*-
@@ -38,7 +38,7 @@
#if 0
static const char sccsid[] = "@(#)tar.c 8.2 (Berkeley) 4/18/94";
#else
-static const char rcsid[] = "$OpenBSD: tar.c,v 1.30 2003/06/02 23:32:09 millert Exp $";
+static const char rcsid[] = "$OpenBSD: tar.c,v 1.31 2003/06/26 00:10:18 deraadt Exp $";
#endif
#endif /* not lint */
@@ -110,7 +110,7 @@ tar_endrd(void)
*/
int
-tar_trail(char *buf, int in_resync, int *cnt)
+tar_trail(ARCHD *ignore, char *buf, int in_resync, int *cnt)
{
int i;