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.
Files changed (157) hide show
  1. data/ext/Makefile +6 -0
  2. data/ext/extconf.rb +61 -0
  3. data/ext/libarchive-0.1.1/COPYING.libarchive +60 -0
  4. data/ext/libarchive-0.1.1/LICENSE.libbzip2 +42 -0
  5. data/ext/libarchive-0.1.1/README.txt +143 -0
  6. data/ext/libarchive-0.1.1/ext/Makefile.in +0 -0
  7. data/ext/libarchive-0.1.1/ext/archive_read_support_compression.c +31 -0
  8. data/ext/libarchive-0.1.1/ext/archive_read_support_compression.h +6 -0
  9. data/ext/libarchive-0.1.1/ext/archive_read_support_format.c +32 -0
  10. data/ext/libarchive-0.1.1/ext/archive_read_support_format.h +6 -0
  11. data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.c +29 -0
  12. data/ext/libarchive-0.1.1/ext/archive_write_open_rb_str.h +6 -0
  13. data/ext/libarchive-0.1.1/ext/archive_write_set_compression.c +32 -0
  14. data/ext/libarchive-0.1.1/ext/archive_write_set_compression.h +6 -0
  15. data/ext/libarchive-0.1.1/ext/config.h.in +22 -0
  16. data/ext/libarchive-0.1.1/ext/configure +3904 -0
  17. data/ext/libarchive-0.1.1/ext/configure.in +11 -0
  18. data/ext/libarchive-0.1.1/ext/depend +19 -0
  19. data/ext/libarchive-0.1.1/ext/extconf.rb +6 -0
  20. data/ext/libarchive-0.1.1/ext/install-sh +250 -0
  21. data/ext/libarchive-0.1.1/ext/libarchive.c +89 -0
  22. data/ext/libarchive-0.1.1/ext/libarchive_archive.c +84 -0
  23. data/ext/libarchive-0.1.1/ext/libarchive_entry.c +1015 -0
  24. data/ext/libarchive-0.1.1/ext/libarchive_internal.h +155 -0
  25. data/ext/libarchive-0.1.1/ext/libarchive_reader.c +328 -0
  26. data/ext/libarchive-0.1.1/ext/libarchive_win32.h +52 -0
  27. data/ext/libarchive-0.1.1/ext/libarchive_writer.c +246 -0
  28. data/ext/libarchive-0.1.1/libarchive.c +1762 -0
  29. data/ext/libarchive-2.8.4/Makefile.in +7076 -0
  30. data/ext/libarchive-2.8.4/build/autoconf/check_stdcall_func.m4 +51 -0
  31. data/ext/libarchive-2.8.4/build/autoconf/compile +143 -0
  32. data/ext/libarchive-2.8.4/build/autoconf/config.guess +1502 -0
  33. data/ext/libarchive-2.8.4/build/autoconf/config.sub +1708 -0
  34. data/ext/libarchive-2.8.4/build/autoconf/depcomp +630 -0
  35. data/ext/libarchive-2.8.4/build/autoconf/install-sh +291 -0
  36. data/ext/libarchive-2.8.4/build/autoconf/la_uid_t.m4 +20 -0
  37. data/ext/libarchive-2.8.4/build/autoconf/ltmain.sh +8406 -0
  38. data/ext/libarchive-2.8.4/build/autoconf/missing +376 -0
  39. data/ext/libarchive-2.8.4/build/pkgconfig/libarchive.pc.in +10 -0
  40. data/ext/libarchive-2.8.4/config.h.in +772 -0
  41. data/ext/libarchive-2.8.4/configure +17916 -0
  42. data/ext/libarchive-2.8.4/libarchive/archive.h +741 -0
  43. data/ext/libarchive-2.8.4/libarchive/archive_check_magic.c +134 -0
  44. data/ext/libarchive-2.8.4/libarchive/archive_crc32.h +66 -0
  45. data/ext/libarchive-2.8.4/libarchive/archive_endian.h +162 -0
  46. data/ext/libarchive-2.8.4/libarchive/archive_entry.c +2202 -0
  47. data/ext/libarchive-2.8.4/libarchive/archive_entry.h +524 -0
  48. data/ext/libarchive-2.8.4/libarchive/archive_entry_copy_bhfi.c +74 -0
  49. data/ext/libarchive-2.8.4/libarchive/archive_entry_copy_stat.c +77 -0
  50. data/ext/libarchive-2.8.4/libarchive/archive_entry_link_resolver.c +405 -0
  51. data/ext/libarchive-2.8.4/libarchive/archive_entry_private.h +184 -0
  52. data/ext/libarchive-2.8.4/libarchive/archive_entry_stat.c +118 -0
  53. data/ext/libarchive-2.8.4/libarchive/archive_entry_strmode.c +87 -0
  54. data/ext/libarchive-2.8.4/libarchive/archive_entry_xattr.c +158 -0
  55. data/ext/libarchive-2.8.4/libarchive/archive_hash.h +281 -0
  56. data/ext/libarchive-2.8.4/libarchive/archive_platform.h +165 -0
  57. data/ext/libarchive-2.8.4/libarchive/archive_private.h +124 -0
  58. data/ext/libarchive-2.8.4/libarchive/archive_read.c +1249 -0
  59. data/ext/libarchive-2.8.4/libarchive/archive_read_data_into_fd.c +93 -0
  60. data/ext/libarchive-2.8.4/libarchive/archive_read_disk.c +198 -0
  61. data/ext/libarchive-2.8.4/libarchive/archive_read_disk_entry_from_file.c +570 -0
  62. data/ext/libarchive-2.8.4/libarchive/archive_read_disk_private.h +62 -0
  63. data/ext/libarchive-2.8.4/libarchive/archive_read_disk_set_standard_lookup.c +303 -0
  64. data/ext/libarchive-2.8.4/libarchive/archive_read_extract.c +182 -0
  65. data/ext/libarchive-2.8.4/libarchive/archive_read_open_fd.c +190 -0
  66. data/ext/libarchive-2.8.4/libarchive/archive_read_open_file.c +165 -0
  67. data/ext/libarchive-2.8.4/libarchive/archive_read_open_filename.c +272 -0
  68. data/ext/libarchive-2.8.4/libarchive/archive_read_open_memory.c +156 -0
  69. data/ext/libarchive-2.8.4/libarchive/archive_read_private.h +199 -0
  70. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_all.c +60 -0
  71. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_bzip2.c +353 -0
  72. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_compress.c +444 -0
  73. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_gzip.c +465 -0
  74. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_none.c +40 -0
  75. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_program.c +459 -0
  76. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_rpm.c +287 -0
  77. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_uu.c +627 -0
  78. data/ext/libarchive-2.8.4/libarchive/archive_read_support_compression_xz.c +708 -0
  79. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_all.c +43 -0
  80. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_ar.c +584 -0
  81. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_cpio.c +777 -0
  82. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_empty.c +93 -0
  83. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_iso9660.c +2830 -0
  84. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_mtree.c +1304 -0
  85. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_raw.c +185 -0
  86. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_tar.c +2418 -0
  87. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_xar.c +3151 -0
  88. data/ext/libarchive-2.8.4/libarchive/archive_read_support_format_zip.c +903 -0
  89. data/ext/libarchive-2.8.4/libarchive/archive_string.c +453 -0
  90. data/ext/libarchive-2.8.4/libarchive/archive_string.h +148 -0
  91. data/ext/libarchive-2.8.4/libarchive/archive_string_sprintf.c +164 -0
  92. data/ext/libarchive-2.8.4/libarchive/archive_util.c +391 -0
  93. data/ext/libarchive-2.8.4/libarchive/archive_virtual.c +94 -0
  94. data/ext/libarchive-2.8.4/libarchive/archive_windows.c +1236 -0
  95. data/ext/libarchive-2.8.4/libarchive/archive_windows.h +347 -0
  96. data/ext/libarchive-2.8.4/libarchive/archive_write.c +466 -0
  97. data/ext/libarchive-2.8.4/libarchive/archive_write_disk.c +2628 -0
  98. data/ext/libarchive-2.8.4/libarchive/archive_write_disk_private.h +38 -0
  99. data/ext/libarchive-2.8.4/libarchive/archive_write_disk_set_standard_lookup.c +262 -0
  100. data/ext/libarchive-2.8.4/libarchive/archive_write_open_fd.c +141 -0
  101. data/ext/libarchive-2.8.4/libarchive/archive_write_open_file.c +105 -0
  102. data/ext/libarchive-2.8.4/libarchive/archive_write_open_filename.c +162 -0
  103. data/ext/libarchive-2.8.4/libarchive/archive_write_open_memory.c +126 -0
  104. data/ext/libarchive-2.8.4/libarchive/archive_write_private.h +122 -0
  105. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_bzip2.c +408 -0
  106. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_compress.c +492 -0
  107. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_gzip.c +477 -0
  108. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_none.c +257 -0
  109. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_program.c +347 -0
  110. data/ext/libarchive-2.8.4/libarchive/archive_write_set_compression_xz.c +438 -0
  111. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format.c +72 -0
  112. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_ar.c +550 -0
  113. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_by_name.c +76 -0
  114. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio.c +344 -0
  115. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_cpio_newc.c +295 -0
  116. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_mtree.c +1050 -0
  117. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_pax.c +1386 -0
  118. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_shar.c +626 -0
  119. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_ustar.c +587 -0
  120. data/ext/libarchive-2.8.4/libarchive/archive_write_set_format_zip.c +667 -0
  121. data/ext/libarchive-2.8.4/libarchive/config_freebsd.h +154 -0
  122. data/ext/libarchive-2.8.4/libarchive/filter_fork.c +161 -0
  123. data/ext/libarchive-2.8.4/libarchive/filter_fork.h +41 -0
  124. data/ext/libarchive-2.8.4/libarchive/filter_fork_windows.c +113 -0
  125. data/ext/libarchive-static-makefile +80 -0
  126. data/ext/libarchive-static-wrapper-makefile +22 -0
  127. data/ext/zlib-1.2.5/Makefile.in +257 -0
  128. data/ext/zlib-1.2.5/adler32.c +169 -0
  129. data/ext/zlib-1.2.5/compress.c +80 -0
  130. data/ext/zlib-1.2.5/configure +596 -0
  131. data/ext/zlib-1.2.5/crc32.c +442 -0
  132. data/ext/zlib-1.2.5/crc32.h +441 -0
  133. data/ext/zlib-1.2.5/deflate.c +1834 -0
  134. data/ext/zlib-1.2.5/deflate.h +342 -0
  135. data/ext/zlib-1.2.5/example.c +565 -0
  136. data/ext/zlib-1.2.5/gzclose.c +25 -0
  137. data/ext/zlib-1.2.5/gzguts.h +132 -0
  138. data/ext/zlib-1.2.5/gzlib.c +537 -0
  139. data/ext/zlib-1.2.5/gzread.c +653 -0
  140. data/ext/zlib-1.2.5/gzwrite.c +531 -0
  141. data/ext/zlib-1.2.5/infback.c +632 -0
  142. data/ext/zlib-1.2.5/inffast.c +340 -0
  143. data/ext/zlib-1.2.5/inffast.h +11 -0
  144. data/ext/zlib-1.2.5/inffixed.h +94 -0
  145. data/ext/zlib-1.2.5/inflate.c +1480 -0
  146. data/ext/zlib-1.2.5/inflate.h +122 -0
  147. data/ext/zlib-1.2.5/inftrees.c +330 -0
  148. data/ext/zlib-1.2.5/inftrees.h +62 -0
  149. data/ext/zlib-1.2.5/minigzip.c +440 -0
  150. data/ext/zlib-1.2.5/trees.c +1244 -0
  151. data/ext/zlib-1.2.5/trees.h +128 -0
  152. data/ext/zlib-1.2.5/uncompr.c +59 -0
  153. data/ext/zlib-1.2.5/zconf.h +428 -0
  154. data/ext/zlib-1.2.5/zlib.h +1613 -0
  155. data/ext/zlib-1.2.5/zutil.c +318 -0
  156. data/ext/zlib-1.2.5/zutil.h +274 -0
  157. 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 */