libarchive-static 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/Makefile +6 -0
- data/ext/extconf.rb +61 -0
- data/ext/libarchive-0.1.1/COPYING.libarchive +60 -0
- data/ext/libarchive-0.1.1/LICENSE.libbzip2 +42 -0
- data/ext/libarchive-0.1.1/README.txt +143 -0
- data/ext/libarchive-0.1.1/ext/Makefile.in +0 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.c +31 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_compression.h +6 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_format.c +32 -0
- data/ext/libarchive-0.1.1/ext/archive_read_support_format.h +6 -0
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.c +29 -0
- data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.h +6 -0
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.c +32 -0
- data/ext/libarchive-0.1.1/ext/archive_write_set_compression.h +6 -0
- data/ext/libarchive-0.1.1/ext/config.h.in +22 -0
- data/ext/libarchive-0.1.1/ext/configure +3904 -0
- data/ext/libarchive-0.1.1/ext/configure.in +11 -0
- data/ext/libarchive-0.1.1/ext/depend +19 -0
- data/ext/libarchive-0.1.1/ext/extconf.rb +6 -0
- data/ext/libarchive-0.1.1/ext/install-sh +250 -0
- data/ext/libarchive-0.1.1/ext/libarchive.c +89 -0
- data/ext/libarchive-0.1.1/ext/libarchive_archive.c +84 -0
- data/ext/libarchive-0.1.1/ext/libarchive_entry.c +1015 -0
- data/ext/libarchive-0.1.1/ext/libarchive_internal.h +155 -0
- data/ext/libarchive-0.1.1/ext/libarchive_reader.c +328 -0
- data/ext/libarchive-0.1.1/ext/libarchive_win32.h +52 -0
- data/ext/libarchive-0.1.1/ext/libarchive_writer.c +246 -0
- data/ext/libarchive-0.1.1/libarchive.c +1762 -0
- data/ext/libarchive-2.8.4/Makefile.in +7076 -0
- data/ext/libarchive-2.8.4/build/autoconf/check_stdcall_func.m4 +51 -0
- data/ext/libarchive-2.8.4/build/autoconf/compile +143 -0
- data/ext/libarchive-2.8.4/build/autoconf/config.guess +1502 -0
- data/ext/libarchive-2.8.4/build/autoconf/config.sub +1708 -0
- data/ext/libarchive-2.8.4/build/autoconf/depcomp +630 -0
- data/ext/libarchive-2.8.4/build/autoconf/install-sh +291 -0
- data/ext/libarchive-2.8.4/build/autoconf/la_uid_t.m4 +20 -0
- data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +8406 -0
- data/ext/libarchive-2.8.4/build/autoconf/missing +376 -0
- data/ext/libarchive-2.8.4/build/pkgconfig/libarchive.pc.in +10 -0
- data/ext/libarchive-2.8.4/config.h.in +772 -0
- data/ext/libarchive-2.8.4/configure +17916 -0
- data/ext/libarchive-2.8.4/libarchive/archive.h +741 -0
- data/ext/libarchive-2.8.4/libarchive/archive_check_magic.c +134 -0
- data/ext/libarchive-2.8.4/libarchive/archive_crc32.h +66 -0
- data/ext/libarchive-2.8.4/libarchive/archive_endian.h +162 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry.c +2202 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry.h +524 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_copy_bhfi.c +74 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_copy_stat.c +77 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_link_resolver.c +405 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_private.h +184 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_stat.c +118 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_strmode.c +87 -0
- data/ext/libarchive-2.8.4/libarchive/archive_entry_xattr.c +158 -0
- data/ext/libarchive-2.8.4/libarchive/archive_hash.h +281 -0
- data/ext/libarchive-2.8.4/libarchive/archive_platform.h +165 -0
- data/ext/libarchive-2.8.4/libarchive/archive_private.h +124 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read.c +1249 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_data_into_fd.c +93 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +198 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +570 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk_private.h +62 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_disk_set_standard_lookup.c +303 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_extract.c +182 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_fd.c +190 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_file.c +165 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +272 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_open_memory.c +156 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_private.h +199 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_all.c +60 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_bzip2.c +353 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_compress.c +444 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_gzip.c +465 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_none.c +40 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_program.c +459 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_rpm.c +287 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_uu.c +627 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_xz.c +708 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_all.c +43 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_ar.c +584 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +777 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_empty.c +93 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_iso9660.c +2830 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +1304 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_raw.c +185 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_tar.c +2418 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_xar.c +3151 -0
- data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +903 -0
- data/ext/libarchive-2.8.4/libarchive/archive_string.c +453 -0
- data/ext/libarchive-2.8.4/libarchive/archive_string.h +148 -0
- data/ext/libarchive-2.8.4/libarchive/archive_string_sprintf.c +164 -0
- data/ext/libarchive-2.8.4/libarchive/archive_util.c +391 -0
- data/ext/libarchive-2.8.4/libarchive/archive_virtual.c +94 -0
- data/ext/libarchive-2.8.4/libarchive/archive_windows.c +1236 -0
- data/ext/libarchive-2.8.4/libarchive/archive_windows.h +347 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write.c +466 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +2628 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_disk_private.h +38 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_disk_set_standard_lookup.c +262 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_open_fd.c +141 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_open_file.c +105 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_open_filename.c +162 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_open_memory.c +126 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_private.h +122 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +408 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_compress.c +492 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +477 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +257 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +347 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +438 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format.c +72 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_ar.c +550 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_by_name.c +76 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +344 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +295 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +1050 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_pax.c +1386 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_shar.c +626 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_ustar.c +587 -0
- data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +667 -0
- data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +154 -0
- data/ext/libarchive-2.8.4/libarchive/filter_fork.c +161 -0
- data/ext/libarchive-2.8.4/libarchive/filter_fork.h +41 -0
- data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +113 -0
- data/ext/libarchive-static-makefile +80 -0
- data/ext/libarchive-static-wrapper-makefile +22 -0
- data/ext/zlib-1.2.5/Makefile.in +257 -0
- data/ext/zlib-1.2.5/adler32.c +169 -0
- data/ext/zlib-1.2.5/compress.c +80 -0
- data/ext/zlib-1.2.5/configure +596 -0
- data/ext/zlib-1.2.5/crc32.c +442 -0
- data/ext/zlib-1.2.5/crc32.h +441 -0
- data/ext/zlib-1.2.5/deflate.c +1834 -0
- data/ext/zlib-1.2.5/deflate.h +342 -0
- data/ext/zlib-1.2.5/example.c +565 -0
- data/ext/zlib-1.2.5/gzclose.c +25 -0
- data/ext/zlib-1.2.5/gzguts.h +132 -0
- data/ext/zlib-1.2.5/gzlib.c +537 -0
- data/ext/zlib-1.2.5/gzread.c +653 -0
- data/ext/zlib-1.2.5/gzwrite.c +531 -0
- data/ext/zlib-1.2.5/infback.c +632 -0
- data/ext/zlib-1.2.5/inffast.c +340 -0
- data/ext/zlib-1.2.5/inffast.h +11 -0
- data/ext/zlib-1.2.5/inffixed.h +94 -0
- data/ext/zlib-1.2.5/inflate.c +1480 -0
- data/ext/zlib-1.2.5/inflate.h +122 -0
- data/ext/zlib-1.2.5/inftrees.c +330 -0
- data/ext/zlib-1.2.5/inftrees.h +62 -0
- data/ext/zlib-1.2.5/minigzip.c +440 -0
- data/ext/zlib-1.2.5/trees.c +1244 -0
- data/ext/zlib-1.2.5/trees.h +128 -0
- data/ext/zlib-1.2.5/uncompr.c +59 -0
- data/ext/zlib-1.2.5/zconf.h +428 -0
- data/ext/zlib-1.2.5/zlib.h +1613 -0
- data/ext/zlib-1.2.5/zutil.c +318 -0
- data/ext/zlib-1.2.5/zutil.h +274 -0
- metadata +211 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*-
|
|
2
|
+
* Copyright (c) 2003-2007 Tim Kientzle
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Redistribution and use in source and binary forms, with or without
|
|
6
|
+
* modification, are permitted provided that the following conditions
|
|
7
|
+
* are met:
|
|
8
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
9
|
+
* notice, this list of conditions and the following disclaimer.
|
|
10
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
* documentation and/or other materials provided with the distribution.
|
|
13
|
+
*
|
|
14
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
|
15
|
+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
16
|
+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
17
|
+
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
18
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
19
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
20
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
21
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
22
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
23
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#include "archive_platform.h"
|
|
27
|
+
__FBSDID("$FreeBSD: src/lib/libarchive/archive_entry_strmode.c,v 1.4 2008/06/15 05:14:01 kientzle Exp $");
|
|
28
|
+
|
|
29
|
+
#ifdef HAVE_SYS_STAT_H
|
|
30
|
+
#include <sys/stat.h>
|
|
31
|
+
#endif
|
|
32
|
+
#ifdef HAVE_STRING_H
|
|
33
|
+
#include <string.h>
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
#include "archive_entry.h"
|
|
37
|
+
#include "archive_entry_private.h"
|
|
38
|
+
|
|
39
|
+
const char *
|
|
40
|
+
archive_entry_strmode(struct archive_entry *entry)
|
|
41
|
+
{
|
|
42
|
+
static const mode_t permbits[] =
|
|
43
|
+
{ 0400, 0200, 0100, 0040, 0020, 0010, 0004, 0002, 0001 };
|
|
44
|
+
char *bp = entry->strmode;
|
|
45
|
+
mode_t mode;
|
|
46
|
+
int i;
|
|
47
|
+
|
|
48
|
+
/* Fill in a default string, then selectively override. */
|
|
49
|
+
strcpy(bp, "?rwxrwxrwx ");
|
|
50
|
+
|
|
51
|
+
mode = archive_entry_mode(entry);
|
|
52
|
+
switch (archive_entry_filetype(entry)) {
|
|
53
|
+
case AE_IFREG: bp[0] = '-'; break;
|
|
54
|
+
case AE_IFBLK: bp[0] = 'b'; break;
|
|
55
|
+
case AE_IFCHR: bp[0] = 'c'; break;
|
|
56
|
+
case AE_IFDIR: bp[0] = 'd'; break;
|
|
57
|
+
case AE_IFLNK: bp[0] = 'l'; break;
|
|
58
|
+
case AE_IFSOCK: bp[0] = 's'; break;
|
|
59
|
+
case AE_IFIFO: bp[0] = 'p'; break;
|
|
60
|
+
default:
|
|
61
|
+
if (archive_entry_hardlink(entry) != NULL) {
|
|
62
|
+
bp[0] = 'h';
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
for (i = 0; i < 9; i++)
|
|
68
|
+
if (!(mode & permbits[i]))
|
|
69
|
+
bp[i+1] = '-';
|
|
70
|
+
|
|
71
|
+
if (mode & S_ISUID) {
|
|
72
|
+
if (mode & 0100) bp[3] = 's';
|
|
73
|
+
else bp[3] = 'S';
|
|
74
|
+
}
|
|
75
|
+
if (mode & S_ISGID) {
|
|
76
|
+
if (mode & 0010) bp[6] = 's';
|
|
77
|
+
else bp[6] = 'S';
|
|
78
|
+
}
|
|
79
|
+
if (mode & S_ISVTX) {
|
|
80
|
+
if (mode & 0001) bp[9] = 't';
|
|
81
|
+
else bp[9] = 'T';
|
|
82
|
+
}
|
|
83
|
+
if (archive_entry_acl_count(entry, ARCHIVE_ENTRY_ACL_TYPE_ACCESS))
|
|
84
|
+
bp[10] = '+';
|
|
85
|
+
|
|
86
|
+
return (bp);
|
|
87
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*-
|
|
2
|
+
* Copyright (c) 2003-2007 Tim Kientzle
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Redistribution and use in source and binary forms, with or without
|
|
6
|
+
* modification, are permitted provided that the following conditions
|
|
7
|
+
* are met:
|
|
8
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
9
|
+
* notice, this list of conditions and the following disclaimer.
|
|
10
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
* documentation and/or other materials provided with the distribution.
|
|
13
|
+
*
|
|
14
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
|
15
|
+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
16
|
+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
17
|
+
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
18
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
19
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
20
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
21
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
22
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
23
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#include "archive_platform.h"
|
|
27
|
+
__FBSDID("$FreeBSD: head/lib/libarchive/archive_entry_xattr.c 201096 2009-12-28 02:41:27Z kientzle $");
|
|
28
|
+
|
|
29
|
+
#ifdef HAVE_SYS_STAT_H
|
|
30
|
+
#include <sys/stat.h>
|
|
31
|
+
#endif
|
|
32
|
+
#ifdef HAVE_SYS_TYPES_H
|
|
33
|
+
#include <sys/types.h>
|
|
34
|
+
#endif
|
|
35
|
+
#ifdef HAVE_LIMITS_H
|
|
36
|
+
#include <limits.h>
|
|
37
|
+
#endif
|
|
38
|
+
#ifdef HAVE_LINUX_FS_H
|
|
39
|
+
#include <linux/fs.h> /* for Linux file flags */
|
|
40
|
+
#endif
|
|
41
|
+
/*
|
|
42
|
+
* Some Linux distributions have both linux/ext2_fs.h and ext2fs/ext2_fs.h.
|
|
43
|
+
* As the include guards don't agree, the order of include is important.
|
|
44
|
+
*/
|
|
45
|
+
#ifdef HAVE_LINUX_EXT2_FS_H
|
|
46
|
+
#include <linux/ext2_fs.h> /* for Linux file flags */
|
|
47
|
+
#endif
|
|
48
|
+
#if defined(HAVE_EXT2FS_EXT2_FS_H) && !defined(__CYGWIN__)
|
|
49
|
+
#include <ext2fs/ext2_fs.h> /* for Linux file flags */
|
|
50
|
+
#endif
|
|
51
|
+
#include <stddef.h>
|
|
52
|
+
#include <stdio.h>
|
|
53
|
+
#ifdef HAVE_STDLIB_H
|
|
54
|
+
#include <stdlib.h>
|
|
55
|
+
#endif
|
|
56
|
+
#ifdef HAVE_STRING_H
|
|
57
|
+
#include <string.h>
|
|
58
|
+
#endif
|
|
59
|
+
#ifdef HAVE_WCHAR_H
|
|
60
|
+
#include <wchar.h>
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#include "archive.h"
|
|
64
|
+
#include "archive_entry.h"
|
|
65
|
+
#include "archive_private.h"
|
|
66
|
+
#include "archive_entry_private.h"
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* extended attribute handling
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
void
|
|
73
|
+
archive_entry_xattr_clear(struct archive_entry *entry)
|
|
74
|
+
{
|
|
75
|
+
struct ae_xattr *xp;
|
|
76
|
+
|
|
77
|
+
while (entry->xattr_head != NULL) {
|
|
78
|
+
xp = entry->xattr_head->next;
|
|
79
|
+
free(entry->xattr_head->name);
|
|
80
|
+
free(entry->xattr_head->value);
|
|
81
|
+
free(entry->xattr_head);
|
|
82
|
+
entry->xattr_head = xp;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
entry->xattr_head = NULL;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
void
|
|
89
|
+
archive_entry_xattr_add_entry(struct archive_entry *entry,
|
|
90
|
+
const char *name, const void *value, size_t size)
|
|
91
|
+
{
|
|
92
|
+
struct ae_xattr *xp;
|
|
93
|
+
|
|
94
|
+
for (xp = entry->xattr_head; xp != NULL; xp = xp->next)
|
|
95
|
+
;
|
|
96
|
+
|
|
97
|
+
if ((xp = (struct ae_xattr *)malloc(sizeof(struct ae_xattr))) == NULL)
|
|
98
|
+
/* XXX Error XXX */
|
|
99
|
+
return;
|
|
100
|
+
|
|
101
|
+
xp->name = strdup(name);
|
|
102
|
+
if ((xp->value = malloc(size)) != NULL) {
|
|
103
|
+
memcpy(xp->value, value, size);
|
|
104
|
+
xp->size = size;
|
|
105
|
+
} else
|
|
106
|
+
xp->size = 0;
|
|
107
|
+
|
|
108
|
+
xp->next = entry->xattr_head;
|
|
109
|
+
entry->xattr_head = xp;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
/*
|
|
114
|
+
* returns number of the extended attribute entries
|
|
115
|
+
*/
|
|
116
|
+
int
|
|
117
|
+
archive_entry_xattr_count(struct archive_entry *entry)
|
|
118
|
+
{
|
|
119
|
+
struct ae_xattr *xp;
|
|
120
|
+
int count = 0;
|
|
121
|
+
|
|
122
|
+
for (xp = entry->xattr_head; xp != NULL; xp = xp->next)
|
|
123
|
+
count++;
|
|
124
|
+
|
|
125
|
+
return count;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
int
|
|
129
|
+
archive_entry_xattr_reset(struct archive_entry * entry)
|
|
130
|
+
{
|
|
131
|
+
entry->xattr_p = entry->xattr_head;
|
|
132
|
+
|
|
133
|
+
return archive_entry_xattr_count(entry);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
int
|
|
137
|
+
archive_entry_xattr_next(struct archive_entry * entry,
|
|
138
|
+
const char **name, const void **value, size_t *size)
|
|
139
|
+
{
|
|
140
|
+
if (entry->xattr_p) {
|
|
141
|
+
*name = entry->xattr_p->name;
|
|
142
|
+
*value = entry->xattr_p->value;
|
|
143
|
+
*size = entry->xattr_p->size;
|
|
144
|
+
|
|
145
|
+
entry->xattr_p = entry->xattr_p->next;
|
|
146
|
+
|
|
147
|
+
return (ARCHIVE_OK);
|
|
148
|
+
} else {
|
|
149
|
+
*name = NULL;
|
|
150
|
+
*value = NULL;
|
|
151
|
+
*size = (size_t)0;
|
|
152
|
+
return (ARCHIVE_WARN);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
* end of xattr handling
|
|
158
|
+
*/
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/*-
|
|
2
|
+
* Copyright (c) 2009 Joerg Sonnenberger
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Redistribution and use in source and binary forms, with or without
|
|
6
|
+
* modification, are permitted provided that the following conditions
|
|
7
|
+
* are met:
|
|
8
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
9
|
+
* notice, this list of conditions and the following disclaimer.
|
|
10
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
* documentation and/or other materials provided with the distribution.
|
|
13
|
+
*
|
|
14
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
|
15
|
+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
16
|
+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
17
|
+
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
18
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
19
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
20
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
21
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
22
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
23
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
|
+
*
|
|
25
|
+
* $FreeBSD: head/lib/libarchive/archive_hash.h 201171 2009-12-29 06:39:07Z kientzle $
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#ifndef __LIBARCHIVE_BUILD
|
|
29
|
+
#error This header is only to be used internally to libarchive.
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#ifdef HAVE_SYS_TYPES_H
|
|
33
|
+
#include <sys/types.h>
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* Hash function support in various Operating Systems:
|
|
38
|
+
*
|
|
39
|
+
* NetBSD:
|
|
40
|
+
* - MD5 and SHA1 in libc: without _ after algorithm name
|
|
41
|
+
* - SHA2 in libc: with _ after algorithm name
|
|
42
|
+
*
|
|
43
|
+
* OpenBSD:
|
|
44
|
+
* - MD5, SHA1 and SHA2 in libc: without _ after algorithm name
|
|
45
|
+
* - OpenBSD 4.4 and earlier have SHA2 in libc with _ after algorithm name
|
|
46
|
+
*
|
|
47
|
+
* DragonFly and FreeBSD (XXX not used yet):
|
|
48
|
+
* - MD5 and SHA1 in libmd: without _ after algorithm name
|
|
49
|
+
* - SHA256: with _ after algorithm name
|
|
50
|
+
*
|
|
51
|
+
* Mac OS X (10.4 and later):
|
|
52
|
+
* - MD5, SHA1 and SHA2 in libSystem: with CC_ prefix and _ after algorithm name
|
|
53
|
+
*
|
|
54
|
+
* OpenSSL:
|
|
55
|
+
* - MD5, SHA1 and SHA2 in libcrypto: with _ after algorithm name
|
|
56
|
+
*
|
|
57
|
+
* Windows:
|
|
58
|
+
* - MD5, SHA1 and SHA2 in archive_windows.c: without algorithm name
|
|
59
|
+
* and with __la_ prefix.
|
|
60
|
+
*/
|
|
61
|
+
#if defined(ARCHIVE_HASH_MD5_WIN) ||\
|
|
62
|
+
defined(ARCHIVE_HASH_SHA1_WIN) || defined(ARCHIVE_HASH_SHA256_WIN) ||\
|
|
63
|
+
defined(ARCHIVE_HASH_SHA384_WIN) || defined(ARCHIVE_HASH_SHA512_WIN)
|
|
64
|
+
#include <wincrypt.h>
|
|
65
|
+
typedef struct {
|
|
66
|
+
int valid;
|
|
67
|
+
HCRYPTPROV cryptProv;
|
|
68
|
+
HCRYPTHASH hash;
|
|
69
|
+
} Digest_CTX;
|
|
70
|
+
extern void __la_hash_Init(Digest_CTX *, ALG_ID);
|
|
71
|
+
extern void __la_hash_Final(unsigned char *, size_t, Digest_CTX *);
|
|
72
|
+
extern void __la_hash_Update(Digest_CTX *, const unsigned char *, size_t);
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
#if defined(ARCHIVE_HASH_MD5_LIBC)
|
|
76
|
+
# include <md5.h>
|
|
77
|
+
# define ARCHIVE_HAS_MD5
|
|
78
|
+
typedef MD5_CTX archive_md5_ctx;
|
|
79
|
+
# define archive_md5_init(ctx) MD5Init(ctx)
|
|
80
|
+
# define archive_md5_final(ctx, buf) MD5Final(buf, ctx)
|
|
81
|
+
# define archive_md5_update(ctx, buf, n) MD5Update(ctx, buf, n)
|
|
82
|
+
#elif defined(ARCHIVE_HASH_MD5_LIBSYSTEM)
|
|
83
|
+
# include <CommonCrypto/CommonDigest.h>
|
|
84
|
+
# define ARCHIVE_HAS_MD5
|
|
85
|
+
typedef CC_MD5_CTX archive_md5_ctx;
|
|
86
|
+
# define archive_md5_init(ctx) CC_MD5_Init(ctx)
|
|
87
|
+
# define archive_md5_final(ctx, buf) CC_MD5_Final(buf, ctx)
|
|
88
|
+
# define archive_md5_update(ctx, buf, n) CC_MD5_Update(ctx, buf, n)
|
|
89
|
+
#elif defined(ARCHIVE_HASH_MD5_OPENSSL)
|
|
90
|
+
# include <openssl/md5.h>
|
|
91
|
+
# define ARCHIVE_HAS_MD5
|
|
92
|
+
typedef MD5_CTX archive_md5_ctx;
|
|
93
|
+
# define archive_md5_init(ctx) MD5_Init(ctx)
|
|
94
|
+
# define archive_md5_final(ctx, buf) MD5_Final(buf, ctx)
|
|
95
|
+
# define archive_md5_update(ctx, buf, n) MD5_Update(ctx, buf, n)
|
|
96
|
+
#elif defined(ARCHIVE_HASH_MD5_WIN)
|
|
97
|
+
# define ARCHIVE_HAS_MD5
|
|
98
|
+
# define MD5_DIGEST_LENGTH 16
|
|
99
|
+
typedef Digest_CTX archive_md5_ctx;
|
|
100
|
+
# define archive_md5_init(ctx) __la_hash_Init(ctx, CALG_MD5)
|
|
101
|
+
# define archive_md5_final(ctx, buf) __la_hash_Final(buf, MD5_DIGEST_LENGTH, ctx)
|
|
102
|
+
# define archive_md5_update(ctx, buf, n) __la_hash_Update(ctx, buf, n)
|
|
103
|
+
#endif
|
|
104
|
+
|
|
105
|
+
#if defined(ARCHIVE_HASH_RMD160_LIBC)
|
|
106
|
+
# include <rmd160.h>
|
|
107
|
+
# define ARCHIVE_HAS_RMD160
|
|
108
|
+
typedef RMD160_CTX archive_rmd160_ctx;
|
|
109
|
+
# define archive_rmd160_init(ctx) RMD160Init(ctx)
|
|
110
|
+
# define archive_rmd160_final(ctx, buf) RMD160Final(buf, ctx)
|
|
111
|
+
# define archive_rmd160_update(ctx, buf, n) RMD160Update(ctx, buf, n)
|
|
112
|
+
#elif defined(ARCHIVE_HASH_RMD160_OPENSSL)
|
|
113
|
+
# include <openssl/ripemd.h>
|
|
114
|
+
# define ARCHIVE_HAS_RMD160
|
|
115
|
+
typedef RIPEMD160_CTX archive_rmd160_ctx;
|
|
116
|
+
# define archive_rmd160_init(ctx) RIPEMD160_Init(ctx)
|
|
117
|
+
# define archive_rmd160_final(ctx, buf) RIPEMD160_Final(buf, ctx)
|
|
118
|
+
# define archive_rmd160_update(ctx, buf, n) RIPEMD160_Update(ctx, buf, n)
|
|
119
|
+
#endif
|
|
120
|
+
|
|
121
|
+
#if defined(ARCHIVE_HASH_SHA1_LIBC)
|
|
122
|
+
# include <sha1.h>
|
|
123
|
+
# define ARCHIVE_HAS_SHA1
|
|
124
|
+
typedef SHA1_CTX archive_sha1_ctx;
|
|
125
|
+
# define archive_sha1_init(ctx) SHA1Init(ctx)
|
|
126
|
+
# define archive_sha1_final(ctx, buf) SHA1Final(buf, ctx)
|
|
127
|
+
# define archive_sha1_update(ctx, buf, n) SHA1Update(ctx, buf, n)
|
|
128
|
+
#elif defined(ARCHIVE_HASH_SHA1_LIBSYSTEM)
|
|
129
|
+
# include <CommonCrypto/CommonDigest.h>
|
|
130
|
+
# define ARCHIVE_HAS_SHA1
|
|
131
|
+
typedef CC_SHA1_CTX archive_sha1_ctx;
|
|
132
|
+
# define archive_sha1_init(ctx) CC_SHA1_Init(ctx)
|
|
133
|
+
# define archive_sha1_final(ctx, buf) CC_SHA1_Final(buf, ctx)
|
|
134
|
+
# define archive_sha1_update(ctx, buf, n) CC_SHA1_Update(ctx, buf, n)
|
|
135
|
+
#elif defined(ARCHIVE_HASH_SHA1_OPENSSL)
|
|
136
|
+
# include <openssl/sha.h>
|
|
137
|
+
# define ARCHIVE_HAS_SHA1
|
|
138
|
+
typedef SHA_CTX archive_sha1_ctx;
|
|
139
|
+
# define archive_sha1_init(ctx) SHA1_Init(ctx)
|
|
140
|
+
# define archive_sha1_final(ctx, buf) SHA1_Final(buf, ctx)
|
|
141
|
+
# define archive_sha1_update(ctx, buf, n) SHA1_Update(ctx, buf, n)
|
|
142
|
+
#elif defined(ARCHIVE_HASH_SHA1_WIN)
|
|
143
|
+
# define ARCHIVE_HAS_SHA1
|
|
144
|
+
# define SHA1_DIGEST_LENGTH 20
|
|
145
|
+
typedef Digest_CTX archive_sha1_ctx;
|
|
146
|
+
# define archive_sha1_init(ctx) __la_hash_Init(ctx, CALG_SHA1)
|
|
147
|
+
# define archive_sha1_final(ctx, buf) __la_hash_Final(buf, SHA1_DIGEST_LENGTH, ctx)
|
|
148
|
+
# define archive_sha1_update(ctx, buf, n) __la_hash_Update(ctx, buf, n)
|
|
149
|
+
#endif
|
|
150
|
+
|
|
151
|
+
#if defined(ARCHIVE_HASH_SHA256_LIBC)
|
|
152
|
+
# include <sha2.h>
|
|
153
|
+
# define ARCHIVE_HAS_SHA256
|
|
154
|
+
typedef SHA256_CTX archive_sha256_ctx;
|
|
155
|
+
# define archive_sha256_init(ctx) SHA256_Init(ctx)
|
|
156
|
+
# define archive_sha256_final(ctx, buf) SHA256_Final(buf, ctx)
|
|
157
|
+
# define archive_sha256_update(ctx, buf, n) SHA256_Update(ctx, buf, n)
|
|
158
|
+
#elif defined(ARCHIVE_HASH_SHA256_LIBC2)
|
|
159
|
+
# include <sha2.h>
|
|
160
|
+
# define ARCHIVE_HAS_SHA256
|
|
161
|
+
typedef SHA256_CTX archive_sha256_ctx;
|
|
162
|
+
# define archive_sha256_init(ctx) SHA256Init(ctx)
|
|
163
|
+
# define archive_sha256_final(ctx, buf) SHA256Final(buf, ctx)
|
|
164
|
+
# define archive_sha256_update(ctx, buf, n) SHA256Update(ctx, buf, n)
|
|
165
|
+
#elif defined(ARCHIVE_HASH_SHA256_LIBC3)
|
|
166
|
+
# include <sha2.h>
|
|
167
|
+
# define ARCHIVE_HAS_SHA256
|
|
168
|
+
typedef SHA2_CTX archive_sha256_ctx;
|
|
169
|
+
# define archive_sha256_init(ctx) SHA256Init(ctx)
|
|
170
|
+
# define archive_sha256_final(ctx, buf) SHA256Final(buf, ctx)
|
|
171
|
+
# define archive_sha256_update(ctx, buf, n) SHA256Update(ctx, buf, n)
|
|
172
|
+
#elif defined(ARCHIVE_HASH_SHA256_LIBSYSTEM)
|
|
173
|
+
# include <CommonCrypto/CommonDigest.h>
|
|
174
|
+
# define ARCHIVE_HAS_SHA256
|
|
175
|
+
typedef CC_SHA256_CTX archive_shs256_ctx;
|
|
176
|
+
# define archive_shs256_init(ctx) CC_SHA256_Init(ctx)
|
|
177
|
+
# define archive_shs256_final(ctx, buf) CC_SHA256_Final(buf, ctx)
|
|
178
|
+
# define archive_shs256_update(ctx, buf, n) CC_SHA256_Update(ctx, buf, n)
|
|
179
|
+
#elif defined(ARCHIVE_HASH_SHA256_OPENSSL)
|
|
180
|
+
# include <openssl/sha.h>
|
|
181
|
+
# define ARCHIVE_HAS_SHA256
|
|
182
|
+
typedef SHA256_CTX archive_sha256_ctx;
|
|
183
|
+
# define archive_sha256_init(ctx) SHA256_Init(ctx)
|
|
184
|
+
# define archive_sha256_final(ctx, buf) SHA256_Final(buf, ctx)
|
|
185
|
+
# define archive_sha256_update(ctx, buf, n) SHA256_Update(ctx, buf, n)
|
|
186
|
+
#elif defined(ARCHIVE_HASH_SHA256_WIN)
|
|
187
|
+
# define ARCHIVE_HAS_SHA256
|
|
188
|
+
# define SHA256_DIGEST_LENGTH 32
|
|
189
|
+
typedef Digest_CTX archive_sha256_ctx;
|
|
190
|
+
# define archive_sha256_init(ctx) __la_hash_Init(ctx, CALG_SHA_256)
|
|
191
|
+
# define archive_sha256_final(ctx, buf) __la_hash_Final(buf, SHA256_DIGEST_LENGTH, ctx)
|
|
192
|
+
# define archive_sha256_update(ctx, buf, n) __la_hash_Update(ctx, buf, n)
|
|
193
|
+
#endif
|
|
194
|
+
|
|
195
|
+
#if defined(ARCHIVE_HASH_SHA384_LIBC)
|
|
196
|
+
# include <sha2.h>
|
|
197
|
+
# define ARCHIVE_HAS_SHA384
|
|
198
|
+
typedef SHA384_CTX archive_sha384_ctx;
|
|
199
|
+
# define archive_sha384_init(ctx) SHA384_Init(ctx)
|
|
200
|
+
# define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx)
|
|
201
|
+
# define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n)
|
|
202
|
+
#elif defined(ARCHIVE_HASH_SHA384_LIBC2)
|
|
203
|
+
# include <sha2.h>
|
|
204
|
+
# define ARCHIVE_HAS_SHA384
|
|
205
|
+
typedef SHA384_CTX archive_sha384_ctx;
|
|
206
|
+
# define archive_sha384_init(ctx) SHA384Init(ctx)
|
|
207
|
+
# define archive_sha384_final(ctx, buf) SHA384Final(buf, ctx)
|
|
208
|
+
# define archive_sha384_update(ctx, buf, n) SHA384Update(ctx, buf, n)
|
|
209
|
+
#elif defined(ARCHIVE_HASH_SHA384_LIBC3)
|
|
210
|
+
# include <sha2.h>
|
|
211
|
+
# define ARCHIVE_HAS_SHA384
|
|
212
|
+
typedef SHA2_CTX archive_sha384_ctx;
|
|
213
|
+
# define archive_sha384_init(ctx) SHA384Init(ctx)
|
|
214
|
+
# define archive_sha384_final(ctx, buf) SHA384Final(buf, ctx)
|
|
215
|
+
# define archive_sha384_update(ctx, buf, n) SHA384Update(ctx, buf, n)
|
|
216
|
+
#elif defined(ARCHIVE_HASH_SHA384_LIBSYSTEM)
|
|
217
|
+
# include <CommonCrypto/CommonDigest.h>
|
|
218
|
+
# define ARCHIVE_HAS_SHA384
|
|
219
|
+
typedef CC_SHA512_CTX archive_shs384_ctx;
|
|
220
|
+
# define archive_shs384_init(ctx) CC_SHA384_Init(ctx)
|
|
221
|
+
# define archive_shs384_final(ctx, buf) CC_SHA384_Final(buf, ctx)
|
|
222
|
+
# define archive_shs384_update(ctx, buf, n) CC_SHA384_Update(ctx, buf, n)
|
|
223
|
+
#elif defined(ARCHIVE_HASH_SHA384_OPENSSL)
|
|
224
|
+
# include <openssl/sha.h>
|
|
225
|
+
# define ARCHIVE_HAS_SHA384
|
|
226
|
+
typedef SHA512_CTX archive_sha384_ctx;
|
|
227
|
+
# define archive_sha384_init(ctx) SHA384_Init(ctx)
|
|
228
|
+
# define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx)
|
|
229
|
+
# define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n)
|
|
230
|
+
#elif defined(ARCHIVE_HASH_SHA384_WIN)
|
|
231
|
+
# define ARCHIVE_HAS_SHA384
|
|
232
|
+
# define SHA384_DIGEST_LENGTH 48
|
|
233
|
+
typedef Digest_CTX archive_sha384_ctx;
|
|
234
|
+
# define archive_sha384_init(ctx) __la_hash_Init(ctx, CALG_SHA_384)
|
|
235
|
+
# define archive_sha384_final(ctx, buf) __la_hash_Final(buf, SHA384_DIGEST_LENGTH, ctx)
|
|
236
|
+
# define archive_sha384_update(ctx, buf, n) __la_hash_Update(ctx, buf, n)
|
|
237
|
+
#endif
|
|
238
|
+
|
|
239
|
+
#if defined(ARCHIVE_HASH_SHA512_LIBC)
|
|
240
|
+
# include <sha2.h>
|
|
241
|
+
# define ARCHIVE_HAS_SHA512
|
|
242
|
+
typedef SHA512_CTX archive_sha512_ctx;
|
|
243
|
+
# define archive_sha512_init(ctx) SHA512_Init(ctx)
|
|
244
|
+
# define archive_sha512_final(ctx, buf) SHA512_Final(buf, ctx)
|
|
245
|
+
# define archive_sha512_update(ctx, buf, n) SHA512_Update(ctx, buf, n)
|
|
246
|
+
#elif defined(ARCHIVE_HASH_SHA512_LIBC2)
|
|
247
|
+
# include <sha2.h>
|
|
248
|
+
# define ARCHIVE_HAS_SHA512
|
|
249
|
+
typedef SHA512_CTX archive_sha512_ctx;
|
|
250
|
+
# define archive_sha512_init(ctx) SHA512Init(ctx)
|
|
251
|
+
# define archive_sha512_final(ctx, buf) SHA512Final(buf, ctx)
|
|
252
|
+
# define archive_sha512_update(ctx, buf, n) SHA512Update(ctx, buf, n)
|
|
253
|
+
#elif defined(ARCHIVE_HASH_SHA512_LIBC3)
|
|
254
|
+
# include <sha2.h>
|
|
255
|
+
# define ARCHIVE_HAS_SHA512
|
|
256
|
+
typedef SHA2_CTX archive_sha512_ctx;
|
|
257
|
+
# define archive_sha512_init(ctx) SHA512Init(ctx)
|
|
258
|
+
# define archive_sha512_final(ctx, buf) SHA512Final(buf, ctx)
|
|
259
|
+
# define archive_sha512_update(ctx, buf, n) SHA512Update(ctx, buf, n)
|
|
260
|
+
#elif defined(ARCHIVE_HASH_SHA512_LIBSYSTEM)
|
|
261
|
+
# include <CommonCrypto/CommonDigest.h>
|
|
262
|
+
# define ARCHIVE_HAS_SHA512
|
|
263
|
+
typedef CC_SHA512_CTX archive_shs512_ctx;
|
|
264
|
+
# define archive_shs512_init(ctx) CC_SHA512_Init(ctx)
|
|
265
|
+
# define archive_shs512_final(ctx, buf) CC_SHA512_Final(buf, ctx)
|
|
266
|
+
# define archive_shs512_update(ctx, buf, n) CC_SHA512_Update(ctx, buf, n)
|
|
267
|
+
#elif defined(ARCHIVE_HASH_SHA512_OPENSSL)
|
|
268
|
+
# include <openssl/sha.h>
|
|
269
|
+
# define ARCHIVE_HAS_SHA512
|
|
270
|
+
typedef SHA512_CTX archive_sha512_ctx;
|
|
271
|
+
# define archive_sha512_init(ctx) SHA512_Init(ctx)
|
|
272
|
+
# define archive_sha512_final(ctx, buf) SHA512_Final(buf, ctx)
|
|
273
|
+
# define archive_sha512_update(ctx, buf, n) SHA512_Update(ctx, buf, n)
|
|
274
|
+
#elif defined(ARCHIVE_HASH_SHA512_WIN)
|
|
275
|
+
# define ARCHIVE_HAS_SHA512
|
|
276
|
+
# define SHA512_DIGEST_LENGTH 64
|
|
277
|
+
typedef Digest_CTX archive_sha512_ctx;
|
|
278
|
+
# define archive_sha512_init(ctx) __la_hash_Init(ctx, CALG_SHA_512)
|
|
279
|
+
# define archive_sha512_final(ctx, buf) __la_hash_Final(buf, SHA512_DIGEST_LENGTH, ctx)
|
|
280
|
+
# define archive_sha512_update(ctx, buf, n) __la_hash_Update(ctx, buf, n)
|
|
281
|
+
#endif
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/*-
|
|
2
|
+
* Copyright (c) 2003-2007 Tim Kientzle
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Redistribution and use in source and binary forms, with or without
|
|
6
|
+
* modification, are permitted provided that the following conditions
|
|
7
|
+
* are met:
|
|
8
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
9
|
+
* notice, this list of conditions and the following disclaimer.
|
|
10
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
* documentation and/or other materials provided with the distribution.
|
|
13
|
+
*
|
|
14
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
|
15
|
+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
16
|
+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
17
|
+
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
18
|
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
19
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
20
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
21
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
22
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
23
|
+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24
|
+
*
|
|
25
|
+
* $FreeBSD: head/lib/libarchive/archive_platform.h 201090 2009-12-28 02:22:04Z kientzle $
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* This header is the first thing included in any of the libarchive
|
|
32
|
+
* source files. As far as possible, platform-specific issues should
|
|
33
|
+
* be dealt with here and not within individual source files. I'm
|
|
34
|
+
* actively trying to minimize #if blocks within the main source,
|
|
35
|
+
* since they obfuscate the code.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#ifndef ARCHIVE_PLATFORM_H_INCLUDED
|
|
39
|
+
#define ARCHIVE_PLATFORM_H_INCLUDED
|
|
40
|
+
|
|
41
|
+
/* archive.h and archive_entry.h require this. */
|
|
42
|
+
#define __LIBARCHIVE_BUILD 1
|
|
43
|
+
|
|
44
|
+
#if defined(PLATFORM_CONFIG_H)
|
|
45
|
+
/* Use hand-built config.h in environments that need it. */
|
|
46
|
+
#include PLATFORM_CONFIG_H
|
|
47
|
+
#elif defined(HAVE_CONFIG_H)
|
|
48
|
+
/* Most POSIX platforms use the 'configure' script to build config.h */
|
|
49
|
+
#include "config.h"
|
|
50
|
+
#else
|
|
51
|
+
/* Warn if the library hasn't been (automatically or manually) configured. */
|
|
52
|
+
#error Oops: No config.h and no pre-built configuration in archive_platform.h.
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
/* It should be possible to get rid of this by extending the feature-test
|
|
56
|
+
* macros to cover Windows API functions, probably along with non-trivial
|
|
57
|
+
* refactoring of code to find structures that sit more cleanly on top of
|
|
58
|
+
* either Windows or Posix APIs. */
|
|
59
|
+
#if (defined(__WIN32__) || defined(_WIN32) || defined(__WIN32)) && !defined(__CYGWIN__)
|
|
60
|
+
#include "archive_windows.h"
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
/*
|
|
64
|
+
* The config files define a lot of feature macros. The following
|
|
65
|
+
* uses those macros to select/define replacements and include key
|
|
66
|
+
* headers as required.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/* Get a real definition for __FBSDID if we can */
|
|
70
|
+
#if HAVE_SYS_CDEFS_H
|
|
71
|
+
#include <sys/cdefs.h>
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
/* If not, define it so as to avoid dangling semicolons. */
|
|
75
|
+
#ifndef __FBSDID
|
|
76
|
+
#define __FBSDID(a) struct _undefined_hack
|
|
77
|
+
#endif
|
|
78
|
+
|
|
79
|
+
/* Try to get standard C99-style integer type definitions. */
|
|
80
|
+
#if HAVE_INTTYPES_H
|
|
81
|
+
#include <inttypes.h>
|
|
82
|
+
#endif
|
|
83
|
+
#if HAVE_STDINT_H
|
|
84
|
+
#include <stdint.h>
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
/* Borland warns about its own constants! */
|
|
88
|
+
#if defined(__BORLANDC__)
|
|
89
|
+
# if HAVE_DECL_UINT64_MAX
|
|
90
|
+
# undef UINT64_MAX
|
|
91
|
+
# undef HAVE_DECL_UINT64_MAX
|
|
92
|
+
# endif
|
|
93
|
+
# if HAVE_DECL_UINT64_MIN
|
|
94
|
+
# undef UINT64_MIN
|
|
95
|
+
# undef HAVE_DECL_UINT64_MIN
|
|
96
|
+
# endif
|
|
97
|
+
# if HAVE_DECL_INT64_MAX
|
|
98
|
+
# undef INT64_MAX
|
|
99
|
+
# undef HAVE_DECL_INT64_MAX
|
|
100
|
+
# endif
|
|
101
|
+
# if HAVE_DECL_INT64_MIN
|
|
102
|
+
# undef INT64_MIN
|
|
103
|
+
# undef HAVE_DECL_INT64_MIN
|
|
104
|
+
# endif
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
/* Some platforms lack the standard *_MAX definitions. */
|
|
108
|
+
#if !HAVE_DECL_SIZE_MAX
|
|
109
|
+
#define SIZE_MAX (~(size_t)0)
|
|
110
|
+
#endif
|
|
111
|
+
#if !HAVE_DECL_SSIZE_MAX
|
|
112
|
+
#define SSIZE_MAX ((ssize_t)(SIZE_MAX >> 1))
|
|
113
|
+
#endif
|
|
114
|
+
#if !HAVE_DECL_UINT32_MAX
|
|
115
|
+
#define UINT32_MAX (~(uint32_t)0)
|
|
116
|
+
#endif
|
|
117
|
+
#if !HAVE_DECL_UINT64_MAX
|
|
118
|
+
#define UINT64_MAX (~(uint64_t)0)
|
|
119
|
+
#endif
|
|
120
|
+
#if !HAVE_DECL_INT64_MAX
|
|
121
|
+
#define INT64_MAX ((int64_t)(UINT64_MAX >> 1))
|
|
122
|
+
#endif
|
|
123
|
+
#if !HAVE_DECL_INT64_MIN
|
|
124
|
+
#define INT64_MIN ((int64_t)(~INT64_MAX))
|
|
125
|
+
#endif
|
|
126
|
+
|
|
127
|
+
/*
|
|
128
|
+
* If this platform has <sys/acl.h>, acl_create(), acl_init(),
|
|
129
|
+
* acl_set_file(), and ACL_USER, we assume it has the rest of the
|
|
130
|
+
* POSIX.1e draft functions used in archive_read_extract.c.
|
|
131
|
+
*/
|
|
132
|
+
#if HAVE_SYS_ACL_H && HAVE_ACL_CREATE_ENTRY && HAVE_ACL_INIT && HAVE_ACL_SET_FILE && HAVE_ACL_USER
|
|
133
|
+
#define HAVE_POSIX_ACL 1
|
|
134
|
+
#endif
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* If we can't restore metadata using a file descriptor, then
|
|
138
|
+
* for compatibility's sake, close files before trying to restore metadata.
|
|
139
|
+
*/
|
|
140
|
+
#if defined(HAVE_FCHMOD) || defined(HAVE_FUTIMES) || defined(HAVE_ACL_SET_FD) || defined(HAVE_ACL_SET_FD_NP) || defined(HAVE_FCHOWN)
|
|
141
|
+
#define CAN_RESTORE_METADATA_FD
|
|
142
|
+
#endif
|
|
143
|
+
|
|
144
|
+
/* Set up defaults for internal error codes. */
|
|
145
|
+
#ifndef ARCHIVE_ERRNO_FILE_FORMAT
|
|
146
|
+
#if HAVE_EFTYPE
|
|
147
|
+
#define ARCHIVE_ERRNO_FILE_FORMAT EFTYPE
|
|
148
|
+
#else
|
|
149
|
+
#if HAVE_EILSEQ
|
|
150
|
+
#define ARCHIVE_ERRNO_FILE_FORMAT EILSEQ
|
|
151
|
+
#else
|
|
152
|
+
#define ARCHIVE_ERRNO_FILE_FORMAT EINVAL
|
|
153
|
+
#endif
|
|
154
|
+
#endif
|
|
155
|
+
#endif
|
|
156
|
+
|
|
157
|
+
#ifndef ARCHIVE_ERRNO_PROGRAMMER
|
|
158
|
+
#define ARCHIVE_ERRNO_PROGRAMMER EINVAL
|
|
159
|
+
#endif
|
|
160
|
+
|
|
161
|
+
#ifndef ARCHIVE_ERRNO_MISC
|
|
162
|
+
#define ARCHIVE_ERRNO_MISC (-1)
|
|
163
|
+
#endif
|
|
164
|
+
|
|
165
|
+
#endif /* !ARCHIVE_PLATFORM_H_INCLUDED */
|