PERFORCE change 50947 for review
Marcel Moolenaar
marcel at FreeBSD.org
Mon Apr 12 17:37:59 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=50947
Change 50947 by marcel at marcel_nfs on 2004/04/12 17:37:38
IFC @50944
Affected files ...
.. //depot/projects/gdb/etc/rc.d/adjkerntz#3 integrate
.. //depot/projects/gdb/etc/rc.d/random#4 integrate
.. //depot/projects/gdb/lib/libarchive/Makefile#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_check_magic.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_entry.3#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_entry.c#6 integrate
.. //depot/projects/gdb/lib/libarchive/archive_entry.h#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_private.h#6 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_data_into_buffer.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_data_into_fd.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_extract.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_open_fd.c#2 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_open_file.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_compression_all.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_compression_bzip2.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_compression_gzip.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_compression_none.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_format_all.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_format_cpio.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_read_support_format_gnutar.c#4 delete
.. //depot/projects/gdb/lib/libarchive/archive_read_support_format_tar.c#7 integrate
.. //depot/projects/gdb/lib/libarchive/archive_string.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_string_sprintf.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_util.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_open_fd.c#2 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_open_file.c#5 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_compression_bzip2.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_compression_gzip.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_compression_none.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_format_cpio.c#3 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_format_pax.c#7 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_format_shar.c#4 integrate
.. //depot/projects/gdb/lib/libarchive/archive_write_set_format_ustar.c#4 integrate
.. //depot/projects/gdb/lib/libc/locale/big5.c#4 integrate
.. //depot/projects/gdb/lib/libc/locale/euc.c#4 integrate
.. //depot/projects/gdb/lib/libc/locale/gb18030.c#5 integrate
.. //depot/projects/gdb/lib/libc/locale/gb2312.c#5 integrate
.. //depot/projects/gdb/lib/libc/locale/gbk.c#4 integrate
.. //depot/projects/gdb/lib/libc/locale/mskanji.c#4 integrate
.. //depot/projects/gdb/lib/libc/locale/utf2.c#5 integrate
.. //depot/projects/gdb/lib/libc/locale/utf8.5#2 integrate
.. //depot/projects/gdb/lib/libc/locale/utf8.c#4 integrate
.. //depot/projects/gdb/sbin/dump/dump.8#4 integrate
.. //depot/projects/gdb/sbin/dump/main.c#3 integrate
.. //depot/projects/gdb/sys/conf/NOTES#11 integrate
.. //depot/projects/gdb/sys/dev/acpica/acpi_thermal.c#5 integrate
.. //depot/projects/gdb/sys/dev/pccard/pccard_cis.c#2 integrate
.. //depot/projects/gdb/sys/dev/pccbb/pccbb.c#5 integrate
.. //depot/projects/gdb/sys/dev/random/randomdev.c#5 integrate
.. //depot/projects/gdb/sys/fs/specfs/spec_vnops.c#6 integrate
.. //depot/projects/gdb/sys/i386/conf/NOTES#7 integrate
.. //depot/projects/gdb/sys/kern/kern_sig.c#6 integrate
.. //depot/projects/gdb/sys/kern/subr_rman.c#2 integrate
.. //depot/projects/gdb/sys/net/if_var.h#7 integrate
.. //depot/projects/gdb/sys/net/route.c#3 integrate
.. //depot/projects/gdb/sys/net/rtsock.c#3 integrate
.. //depot/projects/gdb/sys/nfsserver/nfs_serv.c#4 integrate
.. //depot/projects/gdb/usr.bin/make/make.1#3 integrate
.. //depot/projects/gdb/usr.bin/make/parse.c#3 integrate
.. //depot/projects/gdb/usr.bin/make/suff.c#2 integrate
.. //depot/projects/gdb/usr.bin/netstat/if.c#2 integrate
.. //depot/projects/gdb/usr.bin/tar/Makefile#3 integrate
.. //depot/projects/gdb/usr.sbin/sysinstall/menus.c#3 integrate
Differences ...
==== //depot/projects/gdb/etc/rc.d/adjkerntz#3 (text+ko) ====
@@ -1,10 +1,10 @@
#!/bin/sh
#
-# $FreeBSD: src/etc/rc.d/adjkerntz,v 1.3 2004/03/08 12:25:05 pjd Exp $
+# $FreeBSD: src/etc/rc.d/adjkerntz,v 1.4 2004/04/12 18:11:00 brooks Exp $
#
# PROVIDE: adjkerntz
-# REQUIRE: diskless mountcritlocal random
+# REQUIRE: mountcritlocal random
# BEFORE: netif
# KEYWORD: FreeBSD nojail
==== //depot/projects/gdb/etc/rc.d/random#4 (text+ko) ====
@@ -1,10 +1,10 @@
#!/bin/sh
#
-# $FreeBSD: src/etc/rc.d/random,v 1.5 2004/03/08 12:25:05 pjd Exp $
+# $FreeBSD: src/etc/rc.d/random,v 1.6 2004/04/12 18:11:00 brooks Exp $
#
# PROVIDE: random
-# REQUIRE: diskless mountcritlocal initrandom
+# REQUIRE: var initrandom
# BEFORE: netif
# KEYWORD: FreeBSD nojail shutdown
==== //depot/projects/gdb/lib/libarchive/Makefile#5 (text+ko) ====
@@ -1,14 +1,16 @@
-# Makefile for libarchive.
-#
-# $FreeBSD: src/lib/libarchive/Makefile,v 1.5 2004/04/05 21:12:29 kientzle Exp $
-DEBUG_FLAGS=-g
+# $FreeBSD: src/lib/libarchive/Makefile,v 1.6 2004/04/12 01:16:16 kientzle Exp $
+
LIB= archive
SHLIB_MAJOR= 1
+WARNS?= 6
+
# I'm not yet ready for a shared version of this library, as
# there are a couple of API changes still in the works.
NOPIC= 1
+INCS= archive.h archive_entry.h
+
SRCS= archive_check_magic.c \
archive_entry.c \
archive_read.c \
@@ -23,7 +25,6 @@
archive_read_support_compression_none.c \
archive_read_support_format_all.c \
archive_read_support_format_cpio.c \
- archive_read_support_format_gnutar.c \
archive_read_support_format_tar.c \
archive_string.c \
archive_string_sprintf.c \
@@ -41,90 +42,78 @@
archive_write_set_format_shar.c \
archive_write_set_format_ustar.c
-MAN = archive_entry.3 \
+MAN= archive_entry.3 \
archive_read.3 \
archive_util.3 \
archive_write.3 \
libarchive.3 \
tar.5
-MLINKS += archive_entry.3 archive_entry_clear.3
-MLINKS += archive_entry.3 archive_entry_clone.3
-MLINKS += archive_entry.3 archive_entry_copy_stat.3
-MLINKS += archive_entry.3 archive_entry_dup.3
-MLINKS += archive_entry.3 archive_entry_free.3
-MLINKS += archive_entry.3 archive_entry_gname.3
-MLINKS += archive_entry.3 archive_entry_hardlink.3
-MLINKS += archive_entry.3 archive_entry_new.3
-MLINKS += archive_entry.3 archive_entry_pathname.3
-MLINKS += archive_entry.3 archive_entry_set_devmajor.3
-MLINKS += archive_entry.3 archive_entry_set_devminor.3
-MLINKS += archive_entry.3 archive_entry_set_gid.3
-MLINKS += archive_entry.3 archive_entry_set_gname.3
-MLINKS += archive_entry.3 archive_entry_set_hardlink.3
-MLINKS += archive_entry.3 archive_entry_set_mode.3
-MLINKS += archive_entry.3 archive_entry_set_pathname.3
-MLINKS += archive_entry.3 archive_entry_set_symlink.3
-MLINKS += archive_entry.3 archive_entry_set_tartype.3
-MLINKS += archive_entry.3 archive_entry_set_uid.3
-MLINKS += archive_entry.3 archive_entry_set_uname.3
-MLINKS += archive_entry.3 archive_entry_size.3
-MLINKS += archive_entry.3 archive_entry_stat.3
-MLINKS += archive_entry.3 archive_entry_symlink.3
-MLINKS += archive_entry.3 archive_entry_tartype.3
-MLINKS += archive_entry.3 archive_entry_uname.3
-MLINKS += archive_read.3 archive_read_data.3
-MLINKS += archive_read.3 archive_read_data_into_buffer.3
-MLINKS += archive_read.3 archive_read_data_into_file.3
-MLINKS += archive_read.3 archive_read_data_skip.3
-MLINKS += archive_read.3 archive_read_extract.3
-MLINKS += archive_read.3 archive_read_finish.3
-MLINKS += archive_read.3 archive_read_new.3
-MLINKS += archive_read.3 archive_read_next_header.3
-MLINKS += archive_read.3 archive_read_open.3
-MLINKS += archive_read.3 archive_read_open_fd.3
-MLINKS += archive_read.3 archive_read_open_file.3
-MLINKS += archive_read.3 archive_read_set_bytes_per_block.3
-MLINKS += archive_read.3 archive_read_support_compression_all.3
-MLINKS += archive_read.3 archive_read_support_compression_bzip2.3
-MLINKS += archive_read.3 archive_read_support_compression_gzip.3
-MLINKS += archive_read.3 archive_read_support_compression_none.3
-MLINKS += archive_read.3 archive_read_support_format_all.3
-MLINKS += archive_read.3 archive_read_support_format_cpio.3
-MLINKS += archive_read.3 archive_read_support_format_gnutar.3
-MLINKS += archive_read.3 archive_read_support_format_tar.3
-MLINKS += archive_util.3 archive_compression.3
-MLINKS += archive_util.3 archive_compression_name.3
-MLINKS += archive_util.3 archive_errno.3
-MLINKS += archive_util.3 archive_error_string.3
-MLINKS += archive_util.3 archive_format.3
-MLINKS += archive_util.3 archive_format_name.3
-MLINKS += archive_write.3 archive_write_data.3
-MLINKS += archive_write.3 archive_write_finish.3
-MLINKS += archive_write.3 archive_write_header.3
-MLINKS += archive_write.3 archive_write_new.3
-MLINKS += archive_write.3 archive_write_open.3
-MLINKS += archive_write.3 archive_write_open_fd.3
-MLINKS += archive_write.3 archive_write_open_file.3
-MLINKS += archive_write.3 archive_write_prepare.3
-MLINKS += archive_write.3 archive_write_set_bytes_per_block.3
-MLINKS += archive_write.3 archive_write_set_bytes_in_last_block.3
-MLINKS += archive_write.3 archive_write_set_callbacks.3
-MLINKS += archive_write.3 archive_write_set_compression_bzip2.3
-MLINKS += archive_write.3 archive_write_set_compression_gzip.3
-MLINKS += archive_write.3 archive_write_set_format_pax.3
-MLINKS += archive_write.3 archive_write_set_format_ustar.3
-MLINKS += libarchive.3 archive.3
-
-INCS = archive.h archive_entry.h
-
-.if defined(DMALLOC)
-DEBUG_FLAGS+= -DDEBUG -g
-CFLAGS+= -DHAVE_DMALLOC -I/usr/local/include
-LDFLAGS+= -L/usr/local/lib -ldmalloc
-.endif
-#CFLAGS+= -O3
-
-WARNS?= 6
+MLINKS+= archive_entry.3 archive_entry_clear.3
+MLINKS+= archive_entry.3 archive_entry_clone.3
+MLINKS+= archive_entry.3 archive_entry_copy_stat.3
+MLINKS+= archive_entry.3 archive_entry_dup.3
+MLINKS+= archive_entry.3 archive_entry_free.3
+MLINKS+= archive_entry.3 archive_entry_gname.3
+MLINKS+= archive_entry.3 archive_entry_hardlink.3
+MLINKS+= archive_entry.3 archive_entry_new.3
+MLINKS+= archive_entry.3 archive_entry_pathname.3
+MLINKS+= archive_entry.3 archive_entry_set_devmajor.3
+MLINKS+= archive_entry.3 archive_entry_set_devminor.3
+MLINKS+= archive_entry.3 archive_entry_set_gid.3
+MLINKS+= archive_entry.3 archive_entry_set_gname.3
+MLINKS+= archive_entry.3 archive_entry_set_hardlink.3
+MLINKS+= archive_entry.3 archive_entry_set_link.3
+MLINKS+= archive_entry.3 archive_entry_set_mode.3
+MLINKS+= archive_entry.3 archive_entry_set_pathname.3
+MLINKS+= archive_entry.3 archive_entry_set_symlink.3
+MLINKS+= archive_entry.3 archive_entry_set_uid.3
+MLINKS+= archive_entry.3 archive_entry_set_uname.3
+MLINKS+= archive_entry.3 archive_entry_size.3
+MLINKS+= archive_entry.3 archive_entry_stat.3
+MLINKS+= archive_entry.3 archive_entry_symlink.3
+MLINKS+= archive_entry.3 archive_entry_uname.3
+MLINKS+= archive_read.3 archive_read_data.3
+MLINKS+= archive_read.3 archive_read_data_into_buffer.3
+MLINKS+= archive_read.3 archive_read_data_into_file.3
+MLINKS+= archive_read.3 archive_read_data_skip.3
+MLINKS+= archive_read.3 archive_read_extract.3
+MLINKS+= archive_read.3 archive_read_finish.3
+MLINKS+= archive_read.3 archive_read_new.3
+MLINKS+= archive_read.3 archive_read_next_header.3
+MLINKS+= archive_read.3 archive_read_open.3
+MLINKS+= archive_read.3 archive_read_open_fd.3
+MLINKS+= archive_read.3 archive_read_open_file.3
+MLINKS+= archive_read.3 archive_read_set_bytes_per_block.3
+MLINKS+= archive_read.3 archive_read_support_compression_all.3
+MLINKS+= archive_read.3 archive_read_support_compression_bzip2.3
+MLINKS+= archive_read.3 archive_read_support_compression_gzip.3
+MLINKS+= archive_read.3 archive_read_support_compression_none.3
+MLINKS+= archive_read.3 archive_read_support_format_all.3
+MLINKS+= archive_read.3 archive_read_support_format_cpio.3
+MLINKS+= archive_read.3 archive_read_support_format_gnutar.3
+MLINKS+= archive_read.3 archive_read_support_format_tar.3
+MLINKS+= archive_util.3 archive_compression.3
+MLINKS+= archive_util.3 archive_compression_name.3
+MLINKS+= archive_util.3 archive_errno.3
+MLINKS+= archive_util.3 archive_error_string.3
+MLINKS+= archive_util.3 archive_format.3
+MLINKS+= archive_util.3 archive_format_name.3
+MLINKS+= archive_write.3 archive_write_data.3
+MLINKS+= archive_write.3 archive_write_finish.3
+MLINKS+= archive_write.3 archive_write_header.3
+MLINKS+= archive_write.3 archive_write_new.3
+MLINKS+= archive_write.3 archive_write_open.3
+MLINKS+= archive_write.3 archive_write_open_fd.3
+MLINKS+= archive_write.3 archive_write_open_file.3
+MLINKS+= archive_write.3 archive_write_prepare.3
+MLINKS+= archive_write.3 archive_write_set_bytes_per_block.3
+MLINKS+= archive_write.3 archive_write_set_bytes_in_last_block.3
+MLINKS+= archive_write.3 archive_write_set_callbacks.3
+MLINKS+= archive_write.3 archive_write_set_compression_bzip2.3
+MLINKS+= archive_write.3 archive_write_set_compression_gzip.3
+MLINKS+= archive_write.3 archive_write_set_format_pax.3
+MLINKS+= archive_write.3 archive_write_set_format_ustar.3
+MLINKS+= libarchive.3 archive.3
.include <bsd.lib.mk>
==== //depot/projects/gdb/lib/libarchive/archive_check_magic.c#3 (text+ko) ====
@@ -25,13 +25,10 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_check_magic.c,v 1.2 2004/03/09 19:50:41 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_check_magic.c,v 1.3 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/types.h>
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <stdio.h>
#include <string.h>
#include <unistd.h>
==== //depot/projects/gdb/lib/libarchive/archive_entry.3#3 (text+ko) ====
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/lib/libarchive/archive_entry.3,v 1.2 2004/03/19 22:37:06 kientzle Exp $
+.\" $FreeBSD: src/lib/libarchive/archive_entry.3,v 1.3 2004/04/12 01:16:16 kientzle Exp $
.\"
.Dd December 15, 2003
.Dt archive_entry 3
@@ -52,14 +52,12 @@
.Nm archive_entry_set_mode
.Nm archive_entry_set_pathname
.Nm archive_entry_set_symlink
-.Nm archive_entry_set_tartype
.Nm archive_entry_set_uid
.Nm archive_entry_set_uname
.Nm archive_entry_size
.Nm archive_entry_stat
.Nm archive_entry_symlink
.Nm archive_entry_symlink_w
-.Nm archive_entry_tartype
.Nm archive_entry_uname
.Nm archive_entry_uname_w
.Nd functions for manipulating archive entry descriptions
@@ -114,8 +112,6 @@
.Ft void
.Fn archive_entry_set_symlink "struct archive_entry *" "const char *"
.Ft void
-.Fn archive_entry_set_tartype "struct archive_entry *" "int"
-.Ft void
.Fn archive_entry_set_uid "struct archive_entry *" "uid_t"
.Ft void
.Fn archive_entry_set_uname "struct archive_entry *" "const char *"
@@ -127,8 +123,6 @@
.Fn archive_entry_symlink "struct archive_entry *"
.Ft const wchar_t *
.Fn archive_entry_symlink_w "struct archive_entry *"
-.Ft int
-.Fn archive_entry_tartype "struct archive_entry *"
.Ft const char *
.Fn archive_entry_uname "struct archive_entry *"
.Ft const wchar_t *
@@ -199,12 +193,6 @@
Allocate and return a blank
.Tn struct archive_entry
object.
-.It Fn archive_entry_set_tartype
-Sets the value to be used in a tar-format header
-for this entry.
-Client code should generally not set this; if it
-is left unset, the library will automatically determine
-an appropriate value.
.El
.\" .Sh EXAMPLE
.\" .Sh RETURN VALUES
==== //depot/projects/gdb/lib/libarchive/archive_entry.c#6 (text+ko) ====
@@ -25,13 +25,10 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_entry.c,v 1.5 2004/04/06 23:16:50 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_entry.c,v 1.6 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/stat.h>
#include <sys/types.h>
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
@@ -119,9 +116,6 @@
*/
struct stat ae_stat;
- /* I'm not happy with having this format-particular data here. */
- int ae_tartype;
-
/*
* Use aes here so that we get transparent mbs<->wcs conversions.
*/
@@ -283,7 +277,6 @@
aes_clean(&entry->ae_uname);
archive_entry_acl_clear(entry);
memset(entry, 0, sizeof(*entry));
- entry->ae_tartype = -1;
return entry;
}
@@ -298,7 +291,6 @@
return (NULL);
memset(entry2, 0, sizeof(*entry2));
entry2->ae_stat = entry->ae_stat;
- entry2->ae_tartype = entry->ae_tartype;
aes_copy(&entry2->ae_fflags ,&entry->ae_fflags);
aes_copy(&entry2->ae_gname ,&entry->ae_gname);
@@ -326,7 +318,6 @@
if(entry == NULL)
return (NULL);
memset(entry, 0, sizeof(*entry));
- entry->ae_tartype = -1;
return (entry);
}
@@ -415,12 +406,6 @@
return (aes_get_mbs(&entry->ae_symlink));
}
-int
-archive_entry_tartype(struct archive_entry *entry)
-{
- return (entry->ae_tartype);
-}
-
const char *
archive_entry_uname(struct archive_entry *entry)
{
@@ -501,6 +486,16 @@
aes_copy_wcs(&entry->ae_hardlink, target);
}
+/* Set symlink if symlink is already set, else set hardlink. */
+void
+archive_entry_set_link(struct archive_entry *entry, const char *target)
+{
+ if (entry->ae_symlink.aes_mbs != NULL ||
+ entry->ae_symlink.aes_wcs != NULL)
+ aes_set_mbs(&entry->ae_symlink, target);
+ aes_set_mbs(&entry->ae_hardlink, target);
+}
+
void
archive_entry_set_mode(struct archive_entry *entry, mode_t m)
{
@@ -538,12 +533,6 @@
}
void
-archive_entry_set_tartype(struct archive_entry *entry, char t)
-{
- entry->ae_tartype = t;
-}
-
-void
archive_entry_set_uid(struct archive_entry *entry, uid_t u)
{
entry->ae_stat.st_uid = u;
@@ -1121,15 +1110,16 @@
namebuff =
malloc(namebuff_length * sizeof(wchar_t));
}
- wmemcpy(namebuff, start, end-start);
+ wmemcpy(namebuff, name_start, name_end - name_start);
archive_entry_acl_add_entry_w(entry, type,
permset, tag, id, namebuff);
}
}
+ if (namebuff != NULL)
+ free(namebuff);
return (ARCHIVE_OK);
fail:
- fprintf(stderr, "ACL error\n");
if (namebuff != NULL)
free(namebuff);
return (ARCHIVE_WARN);
==== //depot/projects/gdb/lib/libarchive/archive_entry.h#5 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libarchive/archive_entry.h,v 1.4 2004/04/06 23:16:50 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/archive_entry.h,v 1.5 2004/04/12 01:16:16 kientzle Exp $
*/
#ifndef ARCHIVE_ENTRY_H_INCLUDED
@@ -79,7 +79,6 @@
int64_t archive_entry_size(struct archive_entry *);
const struct stat *archive_entry_stat(struct archive_entry *);
const char *archive_entry_symlink(struct archive_entry *);
-int archive_entry_tartype(struct archive_entry *);
const char *archive_entry_uname(struct archive_entry *);
/*
@@ -99,23 +98,24 @@
void archive_entry_copy_gname_w(struct archive_entry *, const wchar_t *);
void archive_entry_set_hardlink(struct archive_entry *, const char *);
void archive_entry_copy_hardlink_w(struct archive_entry *, const wchar_t *);
+void archive_entry_set_link(struct archive_entry *, const char *);
void archive_entry_set_mode(struct archive_entry *, mode_t);
void archive_entry_set_pathname(struct archive_entry *, const char *);
void archive_entry_copy_pathname_w(struct archive_entry *, const wchar_t *);
void archive_entry_set_size(struct archive_entry *, int64_t);
void archive_entry_set_symlink(struct archive_entry *, const char *);
void archive_entry_copy_symlink_w(struct archive_entry *, const wchar_t *);
-void archive_entry_set_tartype(struct archive_entry *, char);
void archive_entry_set_uid(struct archive_entry *, uid_t);
void archive_entry_set_uname(struct archive_entry *, const char *);
void archive_entry_copy_uname_w(struct archive_entry *, const wchar_t *);
/*
* ACL routines. This used to simply store and return text-format ACL
- * strings, but that proved insufficient. The intent here is to allow
- * libarchive internals to fetch/store text-format strings, but
- * clients use the more involved interface that allows them control
- * over uid/uname/gid/gname lookups.
+ * strings, but that proved insufficient for a number of reasons:
+ * = clients need control over uname/uid and gname/gid mappings
+ * = there are many different ACL text formats
+ * = would like to be able to read/convert archives containing ACLs
+ * on platforms that lack ACL libraries
*/
/*
@@ -139,7 +139,6 @@
#define ARCHIVE_ENTRY_ACL_MASK 10005 /* Modify group access. */
#define ARCHIVE_ENTRY_ACL_OTHER 10006 /* Public. */
-
/*
* Set the ACL by clearing it and adding entries one at a time.
* Unlike the POSIX.1e ACL routines, you must specify the type
@@ -185,6 +184,17 @@
/* Return a count of entries matching 'want_type' */
int archive_entry_acl_count(struct archive_entry *, int want_type);
-
+/*
+ * Private ACL parser. This is private because it handles some
+ * very weird formats that clients should not be messing with.
+ * Clients should only deal with their platform-native formats.
+ * Because of the need to support many formats cleanly, new arguments
+ * are likely to get added on a regular basis. Clients who try to use
+ * this interface are likely to be surprised when it changes.
+ *
+ * You were warned!
+ */
+int __archive_entry_acl_parse_w(struct archive_entry *,
+ const wchar_t *, int type);
#endif /* !ARCHIVE_ENTRY_H_INCLUDED */
==== //depot/projects/gdb/lib/libarchive/archive_private.h#6 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libarchive/archive_private.h,v 1.5 2004/04/06 23:16:50 kientzle Exp $
+ * $FreeBSD: src/lib/libarchive/archive_private.h,v 1.6 2004/04/12 01:16:16 kientzle Exp $
*/
#ifndef ARCHIVE_PRIVATE_H_INCLUDED
@@ -201,7 +201,7 @@
/* Utility function to format a USTAR header into a buffer. */
int
__archive_write_format_header_ustar(struct archive *, char buff[512],
- struct archive_entry *);
+ struct archive_entry *, int tartype);
#define ARCHIVE_STATE_ANY 0xFFFFU
#define ARCHIVE_STATE_NEW 1U
@@ -231,17 +231,4 @@
#define err_combine(a,b) ((a) < (b) ? (a) : (b))
-
-/*
- * Private ACL handling: parse and generate ACL strings.
- * These are private because they handle a lot of very weird formats
- * that clients should not be messing with. Clients should only
- * deal with their platform-native formats. Because of the need to
- * support many formats cleanly, new arguments are likely to get added
- * on a regular basis. Clients who try to use this interface are
- * likely to be surprised when it changes.
- */
-int __archive_entry_acl_parse_w(struct archive_entry *,
- const wchar_t *, int type);
-
#endif
==== //depot/projects/gdb/lib/libarchive/archive_read.c#5 (text+ko) ====
@@ -33,11 +33,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.4 2004/04/05 21:12:29 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.5 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <err.h>
#include <errno.h>
#include <stdio.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_data_into_buffer.c#3 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_data_into_buffer.c,v 1.2 2004/03/09 19:50:41 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_data_into_buffer.c,v 1.3 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <string.h>
#include "archive.h"
==== //depot/projects/gdb/lib/libarchive/archive_read_data_into_fd.c#4 (text+ko) ====
@@ -25,13 +25,9 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_data_into_fd.c,v 1.3 2004/03/19 22:37:06 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_data_into_fd.c,v 1.4 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/types.h>
-
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <unistd.h>
#include "archive.h"
==== //depot/projects/gdb/lib/libarchive/archive_read_extract.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.5 2004/04/06 23:16:50 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.6 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/stat.h>
#include <sys/types.h>
@@ -34,9 +34,6 @@
#endif
#include <sys/time.h>
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
#include <fcntl.h>
#include <grp.h>
@@ -773,15 +770,15 @@
static int
set_extended_perm(struct archive *a, struct archive_entry *entry, int flags)
{
- int ret;
+ int ret, ret2;
if ((flags & ARCHIVE_EXTRACT_PERM) == 0)
return (ARCHIVE_OK);
ret = set_fflags(a, entry);
- if (ret == ARCHIVE_OK)
- ret = set_acls(a, entry);
- return (ret);
+ ret2 = set_acls(a, entry);
+
+ return (err_combine(ret,ret2));
}
static int
@@ -831,6 +828,7 @@
{
(void)a;
(void)entry;
+
return (ARCHIVE_OK);
}
@@ -878,22 +876,33 @@
&ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) {
acl_create_entry(&acl, &acl_entry);
- if (ae_tag == ARCHIVE_ENTRY_ACL_USER) {
+ switch (ae_tag) {
+ case ARCHIVE_ENTRY_ACL_USER:
acl_set_tag_type(acl_entry, ACL_USER);
ae_uid = lookup_uid(a, ae_name, ae_id);
acl_set_qualifier(acl_entry, &ae_uid);
- } else if (ae_tag == ARCHIVE_ENTRY_ACL_GROUP) {
+ break;
+ case ARCHIVE_ENTRY_ACL_GROUP:
acl_set_tag_type(acl_entry, ACL_GROUP);
ae_gid = lookup_gid(a, ae_name, ae_id);
acl_set_qualifier(acl_entry, &ae_gid);
- } else if (ae_tag == ARCHIVE_ENTRY_ACL_USER_OBJ)
+ break;
+ case ARCHIVE_ENTRY_ACL_USER_OBJ:
acl_set_tag_type(acl_entry, ACL_USER_OBJ);
- else if (ae_tag == ARCHIVE_ENTRY_ACL_GROUP_OBJ)
+ break;
+ case ARCHIVE_ENTRY_ACL_GROUP_OBJ:
acl_set_tag_type(acl_entry, ACL_GROUP_OBJ);
- else if (ae_tag == ARCHIVE_ENTRY_ACL_MASK)
+ break;
+ case ARCHIVE_ENTRY_ACL_MASK:
acl_set_tag_type(acl_entry, ACL_MASK);
- else if (ae_tag == ARCHIVE_ENTRY_ACL_OTHER)
+ break;
+ case ARCHIVE_ENTRY_ACL_OTHER:
acl_set_tag_type(acl_entry, ACL_OTHER);
+ break;
+ default:
+ /* XXX */
+ break;
+ }
acl_get_permset(acl_entry, &acl_permset);
acl_clear_perms(acl_permset);
@@ -906,6 +915,7 @@
}
name = archive_entry_pathname(entry);
+
if (acl_set_file(name, acl_type, acl) != 0) {
archive_set_error(a, errno, "Failed to set %s acl", typename);
ret = ARCHIVE_WARN;
==== //depot/projects/gdb/lib/libarchive/archive_read_open_fd.c#2 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_fd.c,v 1.1 2004/04/05 21:12:29 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_fd.c,v 1.2 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
#include <stdlib.h>
#include <string.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_open_file.c#4 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_file.c,v 1.3 2004/04/05 21:12:29 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_file.c,v 1.4 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_support_compression_all.c#3 (text+ko) ====
@@ -25,11 +25,7 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_all.c,v 1.2 2004/03/09 19:50:41 kientzle Exp $");
-
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_all.c,v 1.3 2004/04/12 01:16:16 kientzle Exp $");
#include "archive.h"
==== //depot/projects/gdb/lib/libarchive/archive_read_support_compression_bzip2.c#3 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_bzip2.c,v 1.2 2004/03/09 19:50:41 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_bzip2.c,v 1.3 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <err.h>
#include <errno.h>
#include <stdlib.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_support_compression_gzip.c#4 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_gzip.c,v 1.3 2004/03/19 22:37:06 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_gzip.c,v 1.4 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
#include <stdlib.h>
#include <string.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_support_compression_none.c#4 (text+ko) ====
@@ -25,11 +25,8 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_none.c,v 1.3 2004/04/05 21:12:29 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_none.c,v 1.4 2004/04/12 01:16:16 kientzle Exp $");
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
#include <stdlib.h>
#include <string.h>
==== //depot/projects/gdb/lib/libarchive/archive_read_support_format_all.c#3 (text+ko) ====
@@ -25,11 +25,7 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_all.c,v 1.2 2004/03/09 19:50:41 kientzle Exp $");
-
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_all.c,v 1.3 2004/04/12 01:16:16 kientzle Exp $");
#include "archive.h"
==== //depot/projects/gdb/lib/libarchive/archive_read_support_format_cpio.c#5 (text+ko) ====
@@ -25,13 +25,10 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_cpio.c,v 1.5 2004/03/19 22:37:06 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_cpio.c,v 1.6 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/stat.h>
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <err.h>
#include <errno.h>
/* #include <stdint.h> */ /* See archive_platform.h */
==== //depot/projects/gdb/lib/libarchive/archive_read_support_format_tar.c#7 (text+ko) ====
@@ -25,12 +25,9 @@
*/
#include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.6 2004/04/05 21:12:29 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_tar.c,v 1.7 2004/04/12 01:16:16 kientzle Exp $");
#include <sys/stat.h>
-#ifdef HAVE_DMALLOC
-#include <dmalloc.h>
-#endif
#include <errno.h>
/* #include <stdint.h> */ /* See archive_platform.h */
#include <stdlib.h>
@@ -97,8 +94,12 @@
struct archive_entry *, struct stat *, const void *h);
static int header_longname(struct archive *, struct tar *,
struct archive_entry *, struct stat *, const void *h);
+static int header_volume(struct archive *, struct tar *,
+ struct archive_entry *, struct stat *, const void *h);
static int header_ustar(struct archive *, struct tar *,
struct archive_entry *, struct stat *, const void *h);
+static int header_gnutar(struct archive *, struct tar *,
+ struct archive_entry *, struct stat *, const void *h);
static int archive_read_format_tar_bid(struct archive *);
static int archive_read_format_tar_cleanup(struct archive *);
static int archive_read_format_tar_read_header(struct archive *,
@@ -120,6 +121,13 @@
static int utf8_decode(wchar_t *, const char *, size_t length);
int
+archive_read_support_format_gnutar(struct archive *a)
+{
+ return (archive_read_support_format_tar(a));
+}
+
+
+int
archive_read_support_format_tar(struct archive *a)
{
struct tar *tar;
@@ -185,11 +193,6 @@
ARCHIVE_FORMAT_TAR)
bid++;
- /* If last header was my preferred format, bid a bit more. */
- if (a->archive_format == ARCHIVE_FORMAT_TAR_USTAR ||
- a->archive_format == ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE)
- bid++;
-
/* Now let's look at the actual header and see if it matches. */
bytes_read = (a->compression_read_ahead)(a, &h, 512);
if (bytes_read < 512)
@@ -211,6 +214,11 @@
&&(memcmp(header->version, "00", 2)==0))
bid += 56;
+ /* Recognize GNU tar format as well. */
+ if ((memcmp(header->magic, "ustar ", 6) == 0)
+ &&(memcmp(header->version, " \0", 2)==0))
+ bid += 56;
+
/* Type flag must be null, digit or A-Z, a-z. */
if (header->typeflag[0] != 0 &&
!( header->typeflag[0] >= '0' && header->typeflag[0] <= '9') &&
@@ -280,7 +288,6 @@
/* Check for end-of-archive mark. */
if (((*(const char *)h)==0) && archive_block_is_null(h)) {
- /* TODO: Store file location of start of block */
archive_set_error(a, 0, NULL);
return (ARCHIVE_EOF);
}
@@ -304,11 +311,7 @@
/* Determine the format variant. */
header = h;
- if (memcmp(header->magic, "ustar", 5) != 0) {
- a->archive_format = ARCHIVE_FORMAT_TAR;
- a->archive_format_name = "tar (non-POSIX)";
- err = header_old_tar(a, tar, entry, st, h);
- } else switch(header->typeflag[0]) {
+ switch(header->typeflag[0]) {
case 'A': /* Solaris tar ACL */
a->archive_format = ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE;
a->archive_format_name = "Solaris tar";
@@ -319,12 +322,15 @@
a->archive_format_name = "POSIX pax interchange format";
err = header_pax_global(a, tar, entry, st, h);
break;
- case 'K': /* Long link name (non-POSIX, but fairly common). */
+ case 'K': /* Long link name (GNU tar, others) */
err = header_longlink(a, tar, entry, st, h);
break;
- case 'L': /* Long filename (non-POSIX, but fairly common). */
+ case 'L': /* Long filename (GNU tar, others) */
err = header_longname(a, tar, entry, st, h);
break;
+ case 'V': /* GNU volume header */
+ err = header_volume(a, tar, entry, st, h);
+ break;
case 'X': /* Used by SUN tar; same as 'x'. */
a->archive_format = ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE;
a->archive_format_name =
@@ -337,12 +343,21 @@
err = header_pax_extensions(a, tar, entry, st, h);
break;
default:
- if (a->archive_format != ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE
- && a->archive_format != ARCHIVE_FORMAT_TAR_USTAR) {
- a->archive_format = ARCHIVE_FORMAT_TAR_USTAR;
- a->archive_format_name = "POSIX ustar format";
+ if (memcmp(header->magic, "ustar \0", 8) == 0) {
+ a->archive_format = ARCHIVE_FORMAT_TAR_GNUTAR;
+ a->archive_format_name = "GNU tar format";
+ err = header_gnutar(a, tar, entry, st, h);
+ } else if (memcmp(header->magic, "ustar", 5) == 0) {
+ if (a->archive_format != ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE) {
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list