BSD 4_4_Lite1 release
[unix-history] / usr / src / usr.bin / ar / archive.h
index 56738e2..23b391f 100644 (file)
@@ -1,11 +1,39 @@
 /*-
 /*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1991, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Hugh Smith at The University of Guelph.
  *
  *
  * This code is derived from software contributed to Berkeley by
  * Hugh Smith at The University of Guelph.
  *
- *     @(#)archive.h   5.1 (Berkeley) %G%
+ * 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.
+ *
+ *     @(#)archive.h   8.3 (Berkeley) 4/2/94
  */
 
 /* Ar(1) options. */
  */
 
 /* Ar(1) options. */
 #define        AR_Q    0x0080
 #define        AR_R    0x0100
 #define        AR_T    0x0200
 #define        AR_Q    0x0080
 #define        AR_R    0x0100
 #define        AR_T    0x0200
-#define        AR_U    0x0400
-#define        AR_V    0x0800
-#define        AR_X    0x1000
+#define        AR_TR   0x0400
+#define        AR_U    0x0800
+#define        AR_V    0x1000
+#define        AR_X    0x2000
 extern u_int options;
 
 /* Set up file copy. */
 extern u_int options;
 
 /* Set up file copy. */
@@ -39,6 +68,7 @@ typedef struct {
        char *rname;                    /* read name */
        int wfd;                        /* write file descriptor */
        char *wname;                    /* write name */
        char *rname;                    /* read name */
        int wfd;                        /* write file descriptor */
        char *wname;                    /* write name */
+#define        NOPAD   0x00                    /* don't pad */
 #define        RPAD    0x01                    /* pad on reads */
 #define        WPAD    0x02                    /* pad on writes */
        u_int flags;                    /* pad flags */
 #define        RPAD    0x01                    /* pad on reads */
 #define        WPAD    0x02                    /* pad on writes */
        u_int flags;                    /* pad flags */
@@ -46,35 +76,30 @@ typedef struct {
 
 /* Header structure internal format. */
 typedef struct {
 
 /* Header structure internal format. */
 typedef struct {
+       off_t size;                     /* size of the object in bytes */
        long date;                      /* date */
        long date;                      /* date */
-       long size;                      /* size in bytes */
+       int lname;                      /* size of the long name in bytes */
        int gid;                        /* group */
        int gid;                        /* group */
-       int lname;                      /* if long name */
        int uid;                        /* owner */
        u_short mode;                   /* permissions */
        char name[MAXNAMLEN + 1];       /* name */
 } CHDR;
 
        int uid;                        /* owner */
        u_short mode;                   /* permissions */
        char name[MAXNAMLEN + 1];       /* name */
 } CHDR;
 
-/* Seek over the module contents; always rounds. */
-#define        SKIP(fd, size, name) { \
-       if (lseek((fd), ((size) + ((size) & 1)), SEEK_CUR) == (off_t)-1) \
-               error(name); \
-}
-       
-/* Print out any files that weren't in the archive. */
-#define        ORPHANS { \
-       if (*argv) { \
-               eval = 1; \
-               do { \
-                       (void)fprintf(stderr, \
-                           "ar: %s: not found in archive.\n", *argv); \
-               } while (*++argv); \
-       } \
-}
-
 /* Header format strings. */
 /* Header format strings. */
-#define        HDR1    "%s%-13d%-12ld%-6u%-6u%-8o%-10ld%2s"
-#define        HDR2    "%-16s%-12ld%-6u%-6u%-8o%-10ld%2s"
+#define        HDR1    "%s%-13d%-12ld%-6u%-6u%-8o%-10qd%2s"
+#define        HDR2    "%-16.16s%-12ld%-6u%-6u%-8o%-10qd%2s"
+
+#define        OLDARMAXNAME    15
+#define        HDR3    "%-16.15s%-12ld%-6u%-6u%-8o%-10qd%2s"
+
+
+#include <sys/cdefs.h>
+
+struct stat;
 
 
-#include <stdlib.h>
-#include <string.h>
+void   close_archive __P((int));
+void   copy_ar __P((CF *, off_t));
+int    get_arobj __P((int));
+int    open_archive __P((int));
+void   put_arobj __P((CF *, struct stat *));
+void   skip_arobj __P((int));