From eeae4ead0e8adc5bbe758406d115c534d0a0dc62 Mon Sep 17 00:00:00 2001 From: bneg Date: Tue, 25 Apr 2017 21:36:06 -0700 Subject: [PATCH] Switch to netifaces() for getting interface name, fixes bug on Ubuntu where IP wasn't populated --- lib/common/helpers.py | 19 +- setup/bomutils | 1 + setup/install.sh | 4 + setup/xar-1.5.2/INSTALL | 155 + setup/xar-1.5.2/LICENSE | 33 + setup/xar-1.5.2/Makefile | 108 + setup/xar-1.5.2/Makefile.in | 108 + setup/xar-1.5.2/TODO | 5 + setup/xar-1.5.2/cfghdrs.stamp | 2 + setup/xar-1.5.2/cfghdrs.stamp.in | 1 + setup/xar-1.5.2/cfgoutputs.stamp | 1 + setup/xar-1.5.2/cfgoutputs.stamp.in | 1 + setup/xar-1.5.2/config.guess | 1466 ++++ setup/xar-1.5.2/config.log | 2138 +++++ setup/xar-1.5.2/config.status | 1014 +++ setup/xar-1.5.2/config.sub | 1579 ++++ setup/xar-1.5.2/configure | 9448 +++++++++++++++++++++++ setup/xar-1.5.2/configure.ac | 361 + setup/xar-1.5.2/include/config.h | 34 + setup/xar-1.5.2/include/config.h.in | 33 + setup/xar-1.5.2/include/xar.h | 201 + setup/xar-1.5.2/include/xar.h.in | 201 + setup/xar-1.5.2/install-sh | 250 + setup/xar-1.5.2/lib/.libs/libxar.a | 1 + setup/xar-1.5.2/lib/.libs/libxar.so | 1 + setup/xar-1.5.2/lib/Makefile.inc | 202 + setup/xar-1.5.2/lib/Makefile.inc.in | 202 + setup/xar-1.5.2/lib/appledouble.h | 103 + setup/xar-1.5.2/lib/archive.c | 1420 ++++ setup/xar-1.5.2/lib/archive.d | 23 + setup/xar-1.5.2/lib/archive.h | 94 + setup/xar-1.5.2/lib/archive.o | Bin 0 -> 61912 bytes setup/xar-1.5.2/lib/archive.static.d | 23 + setup/xar-1.5.2/lib/archive.static.o | Bin 0 -> 61648 bytes setup/xar-1.5.2/lib/arcmod.c | 109 + setup/xar-1.5.2/lib/arcmod.d | 23 + setup/xar-1.5.2/lib/arcmod.h | 58 + setup/xar-1.5.2/lib/arcmod.o | Bin 0 -> 8048 bytes setup/xar-1.5.2/lib/arcmod.static.d | 23 + setup/xar-1.5.2/lib/arcmod.static.o | Bin 0 -> 7864 bytes setup/xar-1.5.2/lib/asprintf.h | 92 + setup/xar-1.5.2/lib/b64.c | 207 + setup/xar-1.5.2/lib/b64.d | 1 + setup/xar-1.5.2/lib/b64.h | 13 + setup/xar-1.5.2/lib/b64.o | Bin 0 -> 7080 bytes setup/xar-1.5.2/lib/b64.static.d | 1 + setup/xar-1.5.2/lib/b64.static.o | Bin 0 -> 6992 bytes setup/xar-1.5.2/lib/bzxar.c | 222 + setup/xar-1.5.2/lib/bzxar.d | 22 + setup/xar-1.5.2/lib/bzxar.h | 47 + setup/xar-1.5.2/lib/bzxar.o | Bin 0 -> 6104 bytes setup/xar-1.5.2/lib/bzxar.static.d | 22 + setup/xar-1.5.2/lib/bzxar.static.o | Bin 0 -> 6096 bytes setup/xar-1.5.2/lib/darwinattr.c | 747 ++ setup/xar-1.5.2/lib/darwinattr.d | 23 + setup/xar-1.5.2/lib/darwinattr.h | 43 + setup/xar-1.5.2/lib/darwinattr.o | Bin 0 -> 22408 bytes setup/xar-1.5.2/lib/darwinattr.static.d | 23 + setup/xar-1.5.2/lib/darwinattr.static.o | Bin 0 -> 22392 bytes setup/xar-1.5.2/lib/data.c | 267 + setup/xar-1.5.2/lib/data.d | 22 + setup/xar-1.5.2/lib/data.h | 44 + setup/xar-1.5.2/lib/data.o | Bin 0 -> 18928 bytes setup/xar-1.5.2/lib/data.static.d | 22 + setup/xar-1.5.2/lib/data.static.o | Bin 0 -> 18832 bytes setup/xar-1.5.2/lib/ea.c | 99 + setup/xar-1.5.2/lib/ea.d | 23 + setup/xar-1.5.2/lib/ea.h | 15 + setup/xar-1.5.2/lib/ea.o | Bin 0 -> 8280 bytes setup/xar-1.5.2/lib/ea.static.d | 23 + setup/xar-1.5.2/lib/ea.static.o | Bin 0 -> 8224 bytes setup/xar-1.5.2/lib/err.c | 85 + setup/xar-1.5.2/lib/err.d | 22 + setup/xar-1.5.2/lib/err.o | Bin 0 -> 14376 bytes setup/xar-1.5.2/lib/err.static.d | 22 + setup/xar-1.5.2/lib/err.static.o | Bin 0 -> 14328 bytes setup/xar-1.5.2/lib/ext2.c | 257 + setup/xar-1.5.2/lib/ext2.d | 22 + setup/xar-1.5.2/lib/ext2.h | 42 + setup/xar-1.5.2/lib/ext2.o | Bin 0 -> 5368 bytes setup/xar-1.5.2/lib/ext2.static.d | 22 + setup/xar-1.5.2/lib/ext2.static.o | Bin 0 -> 5360 bytes setup/xar-1.5.2/lib/fbsdattr.c | 337 + setup/xar-1.5.2/lib/fbsdattr.d | 23 + setup/xar-1.5.2/lib/fbsdattr.h | 41 + setup/xar-1.5.2/lib/fbsdattr.o | Bin 0 -> 12480 bytes setup/xar-1.5.2/lib/fbsdattr.static.d | 23 + setup/xar-1.5.2/lib/fbsdattr.static.o | Bin 0 -> 12472 bytes setup/xar-1.5.2/lib/filetree.c | 1114 +++ setup/xar-1.5.2/lib/filetree.d | 22 + setup/xar-1.5.2/lib/filetree.h | 118 + setup/xar-1.5.2/lib/filetree.o | Bin 0 -> 43304 bytes setup/xar-1.5.2/lib/filetree.static.d | 22 + setup/xar-1.5.2/lib/filetree.static.o | Bin 0 -> 43184 bytes setup/xar-1.5.2/lib/hash.c | 262 + setup/xar-1.5.2/lib/hash.d | 22 + setup/xar-1.5.2/lib/hash.h | 52 + setup/xar-1.5.2/lib/hash.o | Bin 0 -> 15768 bytes setup/xar-1.5.2/lib/hash.static.d | 22 + setup/xar-1.5.2/lib/hash.static.o | Bin 0 -> 15688 bytes setup/xar-1.5.2/lib/io.c | 625 ++ setup/xar-1.5.2/lib/io.d | 23 + setup/xar-1.5.2/lib/io.h | 66 + setup/xar-1.5.2/lib/io.o | Bin 0 -> 33104 bytes setup/xar-1.5.2/lib/io.static.d | 23 + setup/xar-1.5.2/lib/io.static.o | Bin 0 -> 32760 bytes setup/xar-1.5.2/lib/librxar.so | 1 + setup/xar-1.5.2/lib/librxar.so.1 | Bin 0 -> 221144 bytes setup/xar-1.5.2/lib/libxar.a | Bin 0 -> 416864 bytes setup/xar-1.5.2/lib/libxar.la | 35 + setup/xar-1.5.2/lib/libxar.la.in | 35 + setup/xar-1.5.2/lib/libxar.la.in.in | 35 + setup/xar-1.5.2/lib/libxar.so | 1 + setup/xar-1.5.2/lib/libxar.so.1 | Bin 0 -> 221144 bytes setup/xar-1.5.2/lib/linuxattr.c | 267 + setup/xar-1.5.2/lib/linuxattr.d | 23 + setup/xar-1.5.2/lib/linuxattr.h | 41 + setup/xar-1.5.2/lib/linuxattr.o | Bin 0 -> 13296 bytes setup/xar-1.5.2/lib/linuxattr.static.d | 23 + setup/xar-1.5.2/lib/linuxattr.static.o | Bin 0 -> 13200 bytes setup/xar-1.5.2/lib/macho.c | 403 + setup/xar-1.5.2/lib/macho.d | 22 + setup/xar-1.5.2/lib/macho.h | 69 + setup/xar-1.5.2/lib/macho.o | Bin 0 -> 22888 bytes setup/xar-1.5.2/lib/macho.static.d | 22 + setup/xar-1.5.2/lib/macho.static.o | Bin 0 -> 22752 bytes setup/xar-1.5.2/lib/script.c | 100 + setup/xar-1.5.2/lib/script.d | 22 + setup/xar-1.5.2/lib/script.h | 39 + setup/xar-1.5.2/lib/script.o | Bin 0 -> 6928 bytes setup/xar-1.5.2/lib/script.static.d | 22 + setup/xar-1.5.2/lib/script.static.o | Bin 0 -> 6864 bytes setup/xar-1.5.2/lib/signature.c | 464 ++ setup/xar-1.5.2/lib/signature.d | 22 + setup/xar-1.5.2/lib/signature.h | 66 + setup/xar-1.5.2/lib/signature.o | Bin 0 -> 26120 bytes setup/xar-1.5.2/lib/signature.static.d | 22 + setup/xar-1.5.2/lib/signature.static.o | Bin 0 -> 26016 bytes setup/xar-1.5.2/lib/stat.c | 783 ++ setup/xar-1.5.2/lib/stat.d | 22 + setup/xar-1.5.2/lib/stat.h | 48 + setup/xar-1.5.2/lib/stat.o | Bin 0 -> 35264 bytes setup/xar-1.5.2/lib/stat.static.d | 22 + setup/xar-1.5.2/lib/stat.static.o | Bin 0 -> 34912 bytes setup/xar-1.5.2/lib/subdoc.c | 218 + setup/xar-1.5.2/lib/subdoc.d | 22 + setup/xar-1.5.2/lib/subdoc.h | 61 + setup/xar-1.5.2/lib/subdoc.o | Bin 0 -> 22632 bytes setup/xar-1.5.2/lib/subdoc.static.d | 22 + setup/xar-1.5.2/lib/subdoc.static.o | Bin 0 -> 22560 bytes setup/xar-1.5.2/lib/util.c | 170 + setup/xar-1.5.2/lib/util.d | 22 + setup/xar-1.5.2/lib/util.h | 54 + setup/xar-1.5.2/lib/util.o | Bin 0 -> 18552 bytes setup/xar-1.5.2/lib/util.static.d | 22 + setup/xar-1.5.2/lib/util.static.o | Bin 0 -> 18504 bytes setup/xar-1.5.2/lib/zxar.c | 213 + setup/xar-1.5.2/lib/zxar.d | 22 + setup/xar-1.5.2/lib/zxar.h | 46 + setup/xar-1.5.2/lib/zxar.o | Bin 0 -> 11488 bytes setup/xar-1.5.2/lib/zxar.static.d | 22 + setup/xar-1.5.2/lib/zxar.static.o | Bin 0 -> 11424 bytes setup/xar-1.5.2/src/Makefile.inc | 65 + setup/xar-1.5.2/src/Makefile.inc.in | 65 + setup/xar-1.5.2/src/ixar | Bin 0 -> 43384 bytes setup/xar-1.5.2/src/xar | Bin 0 -> 235216 bytes setup/xar-1.5.2/src/xar.1 | 107 + setup/xar-1.5.2/src/xar.c | 839 ++ setup/xar-1.5.2/src/xar.d | 22 + setup/xar-1.5.2/src/xar.o | Bin 0 -> 54736 bytes setup/xar-1.5.2/test/attr | 108 + setup/xar-1.5.2/test/buffer.c | 79 + setup/xar-1.5.2/test/checksums | 97 + setup/xar-1.5.2/test/compression | 93 + setup/xar-1.5.2/test/data | 201 + setup/xar-1.5.2/test/data.xsl | 8 + setup/xar-1.5.2/test/functions | 50 + setup/xar-1.5.2/test/hardlink | 47 + setup/xar-1.5.2/test/heap | 97 + setup/xar-1.5.2/test/heap1.xsl | 15 + setup/xar-1.5.2/test/validate.c | 159 + setup/xar-1.5.2/xar.spec | 98 + setup/xar-1.5.2/xar.spec.in | 98 + 183 files changed, 30433 insertions(+), 8 deletions(-) create mode 160000 setup/bomutils create mode 100644 setup/xar-1.5.2/INSTALL create mode 100644 setup/xar-1.5.2/LICENSE create mode 100644 setup/xar-1.5.2/Makefile create mode 100644 setup/xar-1.5.2/Makefile.in create mode 100644 setup/xar-1.5.2/TODO create mode 100644 setup/xar-1.5.2/cfghdrs.stamp create mode 100644 setup/xar-1.5.2/cfghdrs.stamp.in create mode 100644 setup/xar-1.5.2/cfgoutputs.stamp create mode 100644 setup/xar-1.5.2/cfgoutputs.stamp.in create mode 100755 setup/xar-1.5.2/config.guess create mode 100644 setup/xar-1.5.2/config.log create mode 100755 setup/xar-1.5.2/config.status create mode 100755 setup/xar-1.5.2/config.sub create mode 100755 setup/xar-1.5.2/configure create mode 100644 setup/xar-1.5.2/configure.ac create mode 100644 setup/xar-1.5.2/include/config.h create mode 100644 setup/xar-1.5.2/include/config.h.in create mode 100644 setup/xar-1.5.2/include/xar.h create mode 100644 setup/xar-1.5.2/include/xar.h.in create mode 100755 setup/xar-1.5.2/install-sh create mode 120000 setup/xar-1.5.2/lib/.libs/libxar.a create mode 120000 setup/xar-1.5.2/lib/.libs/libxar.so create mode 100644 setup/xar-1.5.2/lib/Makefile.inc create mode 100644 setup/xar-1.5.2/lib/Makefile.inc.in create mode 100644 setup/xar-1.5.2/lib/appledouble.h create mode 100644 setup/xar-1.5.2/lib/archive.c create mode 100644 setup/xar-1.5.2/lib/archive.d create mode 100644 setup/xar-1.5.2/lib/archive.h create mode 100644 setup/xar-1.5.2/lib/archive.o create mode 100644 setup/xar-1.5.2/lib/archive.static.d create mode 100644 setup/xar-1.5.2/lib/archive.static.o create mode 100644 setup/xar-1.5.2/lib/arcmod.c create mode 100644 setup/xar-1.5.2/lib/arcmod.d create mode 100644 setup/xar-1.5.2/lib/arcmod.h create mode 100644 setup/xar-1.5.2/lib/arcmod.o create mode 100644 setup/xar-1.5.2/lib/arcmod.static.d create mode 100644 setup/xar-1.5.2/lib/arcmod.static.o create mode 100644 setup/xar-1.5.2/lib/asprintf.h create mode 100644 setup/xar-1.5.2/lib/b64.c create mode 100644 setup/xar-1.5.2/lib/b64.d create mode 100644 setup/xar-1.5.2/lib/b64.h create mode 100644 setup/xar-1.5.2/lib/b64.o create mode 100644 setup/xar-1.5.2/lib/b64.static.d create mode 100644 setup/xar-1.5.2/lib/b64.static.o create mode 100644 setup/xar-1.5.2/lib/bzxar.c create mode 100644 setup/xar-1.5.2/lib/bzxar.d create mode 100644 setup/xar-1.5.2/lib/bzxar.h create mode 100644 setup/xar-1.5.2/lib/bzxar.o create mode 100644 setup/xar-1.5.2/lib/bzxar.static.d create mode 100644 setup/xar-1.5.2/lib/bzxar.static.o create mode 100644 setup/xar-1.5.2/lib/darwinattr.c create mode 100644 setup/xar-1.5.2/lib/darwinattr.d create mode 100644 setup/xar-1.5.2/lib/darwinattr.h create mode 100644 setup/xar-1.5.2/lib/darwinattr.o create mode 100644 setup/xar-1.5.2/lib/darwinattr.static.d create mode 100644 setup/xar-1.5.2/lib/darwinattr.static.o create mode 100644 setup/xar-1.5.2/lib/data.c create mode 100644 setup/xar-1.5.2/lib/data.d create mode 100644 setup/xar-1.5.2/lib/data.h create mode 100644 setup/xar-1.5.2/lib/data.o create mode 100644 setup/xar-1.5.2/lib/data.static.d create mode 100644 setup/xar-1.5.2/lib/data.static.o create mode 100644 setup/xar-1.5.2/lib/ea.c create mode 100644 setup/xar-1.5.2/lib/ea.d create mode 100644 setup/xar-1.5.2/lib/ea.h create mode 100644 setup/xar-1.5.2/lib/ea.o create mode 100644 setup/xar-1.5.2/lib/ea.static.d create mode 100644 setup/xar-1.5.2/lib/ea.static.o create mode 100644 setup/xar-1.5.2/lib/err.c create mode 100644 setup/xar-1.5.2/lib/err.d create mode 100644 setup/xar-1.5.2/lib/err.o create mode 100644 setup/xar-1.5.2/lib/err.static.d create mode 100644 setup/xar-1.5.2/lib/err.static.o create mode 100644 setup/xar-1.5.2/lib/ext2.c create mode 100644 setup/xar-1.5.2/lib/ext2.d create mode 100644 setup/xar-1.5.2/lib/ext2.h create mode 100644 setup/xar-1.5.2/lib/ext2.o create mode 100644 setup/xar-1.5.2/lib/ext2.static.d create mode 100644 setup/xar-1.5.2/lib/ext2.static.o create mode 100644 setup/xar-1.5.2/lib/fbsdattr.c create mode 100644 setup/xar-1.5.2/lib/fbsdattr.d create mode 100644 setup/xar-1.5.2/lib/fbsdattr.h create mode 100644 setup/xar-1.5.2/lib/fbsdattr.o create mode 100644 setup/xar-1.5.2/lib/fbsdattr.static.d create mode 100644 setup/xar-1.5.2/lib/fbsdattr.static.o create mode 100644 setup/xar-1.5.2/lib/filetree.c create mode 100644 setup/xar-1.5.2/lib/filetree.d create mode 100644 setup/xar-1.5.2/lib/filetree.h create mode 100644 setup/xar-1.5.2/lib/filetree.o create mode 100644 setup/xar-1.5.2/lib/filetree.static.d create mode 100644 setup/xar-1.5.2/lib/filetree.static.o create mode 100644 setup/xar-1.5.2/lib/hash.c create mode 100644 setup/xar-1.5.2/lib/hash.d create mode 100644 setup/xar-1.5.2/lib/hash.h create mode 100644 setup/xar-1.5.2/lib/hash.o create mode 100644 setup/xar-1.5.2/lib/hash.static.d create mode 100644 setup/xar-1.5.2/lib/hash.static.o create mode 100644 setup/xar-1.5.2/lib/io.c create mode 100644 setup/xar-1.5.2/lib/io.d create mode 100644 setup/xar-1.5.2/lib/io.h create mode 100644 setup/xar-1.5.2/lib/io.o create mode 100644 setup/xar-1.5.2/lib/io.static.d create mode 100644 setup/xar-1.5.2/lib/io.static.o create mode 120000 setup/xar-1.5.2/lib/librxar.so create mode 100755 setup/xar-1.5.2/lib/librxar.so.1 create mode 100644 setup/xar-1.5.2/lib/libxar.a create mode 100644 setup/xar-1.5.2/lib/libxar.la create mode 100644 setup/xar-1.5.2/lib/libxar.la.in create mode 100644 setup/xar-1.5.2/lib/libxar.la.in.in create mode 120000 setup/xar-1.5.2/lib/libxar.so create mode 100755 setup/xar-1.5.2/lib/libxar.so.1 create mode 100644 setup/xar-1.5.2/lib/linuxattr.c create mode 100644 setup/xar-1.5.2/lib/linuxattr.d create mode 100644 setup/xar-1.5.2/lib/linuxattr.h create mode 100644 setup/xar-1.5.2/lib/linuxattr.o create mode 100644 setup/xar-1.5.2/lib/linuxattr.static.d create mode 100644 setup/xar-1.5.2/lib/linuxattr.static.o create mode 100644 setup/xar-1.5.2/lib/macho.c create mode 100644 setup/xar-1.5.2/lib/macho.d create mode 100644 setup/xar-1.5.2/lib/macho.h create mode 100644 setup/xar-1.5.2/lib/macho.o create mode 100644 setup/xar-1.5.2/lib/macho.static.d create mode 100644 setup/xar-1.5.2/lib/macho.static.o create mode 100644 setup/xar-1.5.2/lib/script.c create mode 100644 setup/xar-1.5.2/lib/script.d create mode 100644 setup/xar-1.5.2/lib/script.h create mode 100644 setup/xar-1.5.2/lib/script.o create mode 100644 setup/xar-1.5.2/lib/script.static.d create mode 100644 setup/xar-1.5.2/lib/script.static.o create mode 100644 setup/xar-1.5.2/lib/signature.c create mode 100644 setup/xar-1.5.2/lib/signature.d create mode 100644 setup/xar-1.5.2/lib/signature.h create mode 100644 setup/xar-1.5.2/lib/signature.o create mode 100644 setup/xar-1.5.2/lib/signature.static.d create mode 100644 setup/xar-1.5.2/lib/signature.static.o create mode 100644 setup/xar-1.5.2/lib/stat.c create mode 100644 setup/xar-1.5.2/lib/stat.d create mode 100644 setup/xar-1.5.2/lib/stat.h create mode 100644 setup/xar-1.5.2/lib/stat.o create mode 100644 setup/xar-1.5.2/lib/stat.static.d create mode 100644 setup/xar-1.5.2/lib/stat.static.o create mode 100644 setup/xar-1.5.2/lib/subdoc.c create mode 100644 setup/xar-1.5.2/lib/subdoc.d create mode 100644 setup/xar-1.5.2/lib/subdoc.h create mode 100644 setup/xar-1.5.2/lib/subdoc.o create mode 100644 setup/xar-1.5.2/lib/subdoc.static.d create mode 100644 setup/xar-1.5.2/lib/subdoc.static.o create mode 100644 setup/xar-1.5.2/lib/util.c create mode 100644 setup/xar-1.5.2/lib/util.d create mode 100644 setup/xar-1.5.2/lib/util.h create mode 100644 setup/xar-1.5.2/lib/util.o create mode 100644 setup/xar-1.5.2/lib/util.static.d create mode 100644 setup/xar-1.5.2/lib/util.static.o create mode 100644 setup/xar-1.5.2/lib/zxar.c create mode 100644 setup/xar-1.5.2/lib/zxar.d create mode 100644 setup/xar-1.5.2/lib/zxar.h create mode 100644 setup/xar-1.5.2/lib/zxar.o create mode 100644 setup/xar-1.5.2/lib/zxar.static.d create mode 100644 setup/xar-1.5.2/lib/zxar.static.o create mode 100644 setup/xar-1.5.2/src/Makefile.inc create mode 100644 setup/xar-1.5.2/src/Makefile.inc.in create mode 100755 setup/xar-1.5.2/src/ixar create mode 100755 setup/xar-1.5.2/src/xar create mode 100644 setup/xar-1.5.2/src/xar.1 create mode 100644 setup/xar-1.5.2/src/xar.c create mode 100644 setup/xar-1.5.2/src/xar.d create mode 100644 setup/xar-1.5.2/src/xar.o create mode 100755 setup/xar-1.5.2/test/attr create mode 100644 setup/xar-1.5.2/test/buffer.c create mode 100755 setup/xar-1.5.2/test/checksums create mode 100755 setup/xar-1.5.2/test/compression create mode 100755 setup/xar-1.5.2/test/data create mode 100644 setup/xar-1.5.2/test/data.xsl create mode 100755 setup/xar-1.5.2/test/functions create mode 100755 setup/xar-1.5.2/test/hardlink create mode 100755 setup/xar-1.5.2/test/heap create mode 100644 setup/xar-1.5.2/test/heap1.xsl create mode 100644 setup/xar-1.5.2/test/validate.c create mode 100644 setup/xar-1.5.2/xar.spec create mode 100644 setup/xar-1.5.2/xar.spec.in diff --git a/lib/common/helpers.py b/lib/common/helpers.py index 2b51941..c2d712f 100644 --- a/lib/common/helpers.py +++ b/lib/common/helpers.py @@ -49,6 +49,7 @@ import sqlite3 import iptools import threading import pickle +import netifaces from time import localtime, strftime from Crypto.Random import random @@ -597,6 +598,7 @@ def lhost(): Return the local IP. """ + if os.name != 'nt': import fcntl import struct @@ -621,15 +623,16 @@ def lhost(): return ip if (ip == '' or ip.startswith('127.')) and os.name != 'nt': - interfaces = ['eth0','eth1','eth2','wlan0','wlan1','wifi0','ath0','ath1','ppp0'] + interfaces = netifaces.interfaces() for ifname in interfaces: - try: - ip = get_interface_ip(ifname) - if ip != "": - break - except: - print 'Unexpected error:', sys.exc_info()[0] - pass + if "lo" not in ifname: + try: + ip = get_interface_ip(ifname) + if ip != "": + break + except: + print 'Unexpected error:', sys.exc_info()[0] + pass return ip diff --git a/setup/bomutils b/setup/bomutils new file mode 160000 index 0000000..3f7dc2d --- /dev/null +++ b/setup/bomutils @@ -0,0 +1 @@ +Subproject commit 3f7dc2dbbc36ca1c957ec629970026f45594a52c diff --git a/setup/install.sh b/setup/install.sh index 9daa17c..67d0fa7 100755 --- a/setup/install.sh +++ b/setup/install.sh @@ -26,6 +26,7 @@ if lsb_release -d | grep -q "Fedora"; then pip install pyOpenSSL pip install pyinstaller pip install zlib_wrapper + pip install netifaces elif lsb_release -d | grep -q "Kali"; then Release=Kali apt-get install -y make g++ python-dev python-m2crypto swig python-pip libxml2-dev default-jdk libssl-dev @@ -39,6 +40,7 @@ elif lsb_release -d | grep -q "Kali"; then pip install pyOpenSSL pip install pyinstaller pip install zlib_wrapper + pip install netifaces elif lsb_release -d | grep -q "Ubuntu"; then Release=Ubuntu apt-get install -y make g++ python-dev python-m2crypto swig python-pip libxml2-dev default-jdk libssl-dev @@ -53,6 +55,7 @@ elif lsb_release -d | grep -q "Ubuntu"; then pip install pyopenssl pip install pyinstaller pip install zlib_wrapper + pip install netifaces else echo "Unknown distro - Debian/Ubuntu Fallback" apt-get install -y make g++ python-dev python-m2crypto swig python-pip libxml2-dev default-jdk libffi-dev libssl-dev @@ -67,6 +70,7 @@ else pip install pyOpenSSL pip install pyinstaller pip install zlib_wrapper + pip install netifaces fi tar -xvf ../data/misc/xar-1.5.2.tar.gz (cd xar-1.5.2 && ./configure) diff --git a/setup/xar-1.5.2/INSTALL b/setup/xar-1.5.2/INSTALL new file mode 100644 index 0000000..8fec5d8 --- /dev/null +++ b/setup/xar-1.5.2/INSTALL @@ -0,0 +1,155 @@ +################################################################################ +# +# Building and installation instructions for the Xar source distribution. +# +################################################################################ + +Required: Xar's build system uses GNU make. + +Required: Xar depends on libxml2's XML functionality. For more information + about libxml2, see: + + http://www.xmlsoft.org/ + +Required: Xar depends on OpenSSL (libcrypto in particular) for MD5 and SHA1 + functionality. For more information about OpenSSL, see: + + http://www.openssl.org/ + +Required: Xar depends on zlib (libz) for data compression. For more information + about zlib, see: + + http://www.zlib.net/ + +Optional: Xar can optionally use libbzip2 for data compression. For more + information about libbzip2, see: + + http://www.bzip.org/ + +Optional: Regenerating the configure script requires GNU autoconf. Doing so is + only necessary when making changes to the configuration system. + +################################################################################ + +Building Xar is in many cases as simple as typing the following commands while +in the root directory of the source tree: + + ./configure + make + +To install, do the above, then type: + + make install + +Additional build targets of finer granularity include: + + src_all + lib_all + +Additional install targets of finer granularity include: + + src_install + lib_install + +Uninstall targets include: + + uninstall + src_uninstall + lib_uninstall + +Cleanup targets include: + + clean + distclean + relclean + +Note that if you are using a development version of xar, configure is +not checked into the repository. You may replace the ./configure step +above with ./autogen.sh. + +################################################################################ + +The build system is capable of building in a different directory than the +source, so that no files are written to the source tree. In order to use this +feature, run 'configure' and 'make' while in the directory that you want to +build the software in. + +Optionally, pass any of the following arguments to 'configure' (run 'configure' +with the --help option for a full list): + +--prefix= + Set the base directory in which to install. For example: + + ./configure --prefix=/usr/local + + will cause files to be installed into /usr/local/bin, /usr/local/man, + /usr/local/include, /usr/local/lib, and /usr/local/share. + +--enable-autogen + Include dependency rules in the build system to automatically regenerate + files created by configure when their sources are newer. This is + only of interest when making modifications to the source code. + +--with-xml2-config= + If specified, use as the full path (including filename) to the + xml2-config program. This is useful when there is more than one copy of + xml2-config in your shell's path, or when you want to use a copy of + xml2-config that is not in your shell's path at all. + +Optionally, define environment variables when invoking configure, including (not +exclusively): + +CFLAGS="?" + Pass these flags to the compiler. + +CPPFLAGS="?" + Pass these flags to the C preprocessor. Note that CFLAGS is not passed + to 'cpp' when 'configure' is looking for include files, so you must use + CPPFLAGS instead if you need to help 'configure' find header files. + +LD_LIBRARY_PATH="?" + 'ld' uses this colon-separated list to find libraries. + +LDFLAGS="?" + Pass these flags when linking. + +PATH="?" + 'configure' uses this to find programs. + +################################################################################ + +Optionally, define make variables when invoking make, including (not +exclusively): + +PREFIX="?" + Use this as the installation prefix. + +BINDIR="?" + Use this as the installation prefix for programs. + +DATADIR="?" + Use this as the installation prefix for modules and documentation. + +LIBDIR="?" + Use this as the installation prefix for libraries. + +INCLUDEDIR="?" + Use this as the installation prefix for header files. + +MANDIR="?" + Use this as the installation prefix for man pages. + +CC="?" + Use this to specify the C compiler. + +CFLAGS="?" + Pass these flags to the compiler. + +CPPFLAGS="?" + Pass these flags to the C preprocessor. + +LDFLAGS="?" + Pass these flags when linking. + +PATH="?" + Use this to search for programs used during configuration and building. diff --git a/setup/xar-1.5.2/LICENSE b/setup/xar-1.5.2/LICENSE new file mode 100644 index 0000000..986a52e --- /dev/null +++ b/setup/xar-1.5.2/LICENSE @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ + diff --git a/setup/xar-1.5.2/Makefile b/setup/xar-1.5.2/Makefile new file mode 100644 index 0000000..45f9115 --- /dev/null +++ b/setup/xar-1.5.2/Makefile @@ -0,0 +1,108 @@ +# Clear out all vpaths, then set just one (default vpath) for the main build +# directory. +vpath +vpath % . + +# Clear the default suffixes, so that built-in rules are not used. +.SUFFIXES : + +# +# Standard definitions. +# + +SHELL := /bin/sh +CC := gcc +LD := /usr/bin/ld +AR := /usr/bin/ar +RANLIB := /usr/bin/ranlib +INSTALL := /usr/bin/install -c +AUTOCONF := + +# +# Build parameters. +# + +CPPFLAGS := -D_GNU_SOURCE -I/usr/include/libxml2 +CFLAGS := -Wall -g +A_CFLAGS := $(CFLAGS) +S_CFLAGS := $(CFLAGS) -fPIC -DPIC +ifeq (macho, elf) +S_CFLAGS += -dynamic +endif +LDFLAGS := + +prefix := /usr/local +bindir := /usr/local/bin +datadir := /usr/local/share +libdir := /usr/local/lib +includedir := /usr/local/include +mandir := /usr/local/man + +PREFIX := $(prefix) +BINDIR := $(bindir) +DATADIR := $(datadir) +LIBDIR := $(libdir) +INCLUDEDIR := $(includedir) +MANDIR := $(mandir) + +dir_names := lib src + +all : $(dir_names:%=%_all) + +install : $(dir_names:%=%_install) + +uninstall : $(dir_names:%=%_uninstall) + +clean : $(dir_names:%=%_clean) + +distclean : clean $(dir_names:%=%_distclean) + rm -f config.log + rm -f config.status + rm -f cfghdrs.stamp + rm -f cfgoutputs.stamp + rm -f configure.lineno + rm -f cfghdrs.stamp include/config.h + rm -f cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec + rm -rf autom4te.cache + +relclean : distclean + rm -f configure + +# Include Makefile.inc files in subdirectories. +include $(dir_names:%=%/Makefile.inc) + +# +# Re-configuration rules. +# +ifeq (0, 1) +configure : configure.ac + cd ./ && $(AUTOCONF) + +config.status : configure + ./config.status --recheck + +# cfghdrs rules. +cfghdrs.stamp.in : configure.ac + echo stamp > cfghdrs.stamp.in + +$(patsubst %, %.in, cfghdrs.stamp include/config.h) : config.status + +cfghdrs.stamp : $(patsubst %, %.in, cfghdrs.stamp include/config.h) + ./config.status + echo stamp > $@ + +$(filter-out cfghdrs.stamp, cfghdrs.stamp include/config.h) : cfghdrs.stamp + +# cfgoutputs rules. +cfgoutputs.stamp.in : configure.ac + echo stamp > cfgoutputs.stamp.in + +$(patsubst %, %.in, cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec) : config.status + +cfgoutputs.stamp : $(patsubst %, %.in, cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec) + ./config.status + +$(filter-out \ + cfgoutputs.stamp, \ + $(patsubst %, %, cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec)) : cfgoutputs.stamp +endif diff --git a/setup/xar-1.5.2/Makefile.in b/setup/xar-1.5.2/Makefile.in new file mode 100644 index 0000000..a6d6814 --- /dev/null +++ b/setup/xar-1.5.2/Makefile.in @@ -0,0 +1,108 @@ +# Clear out all vpaths, then set just one (default vpath) for the main build +# directory. +vpath +vpath % . + +# Clear the default suffixes, so that built-in rules are not used. +.SUFFIXES : + +# +# Standard definitions. +# + +SHELL := /bin/sh +CC := @CC@ +LD := @LD@ +AR := @AR@ +RANLIB := @RANLIB@ +INSTALL := @INSTALL@ +AUTOCONF := @AUTOCONF@ + +# +# Build parameters. +# + +CPPFLAGS := @CPPFLAGS@ +CFLAGS := @CFLAGS@ +A_CFLAGS := $(CFLAGS) +S_CFLAGS := $(CFLAGS) -fPIC -DPIC +ifeq (macho, @abi@) +S_CFLAGS += -dynamic +endif +LDFLAGS := @LDFLAGS@ + +prefix := @PREFIX@ +bindir := @BINDIR@ +datadir := @DATADIR@ +libdir := @LIBDIR@ +includedir := @INCLUDEDIR@ +mandir := @MANDIR@ + +PREFIX := $(prefix) +BINDIR := $(bindir) +DATADIR := $(datadir) +LIBDIR := $(libdir) +INCLUDEDIR := $(includedir) +MANDIR := $(mandir) + +dir_names := lib src + +all : $(dir_names:%=%_all) + +install : $(dir_names:%=%_install) + +uninstall : $(dir_names:%=%_uninstall) + +clean : $(dir_names:%=%_clean) + +distclean : clean $(dir_names:%=%_distclean) + rm -f @objroot@config.log + rm -f @objroot@config.status + rm -f @objroot@cfghdrs.stamp + rm -f @objroot@cfgoutputs.stamp + rm -f @objroot@configure.lineno + rm -f @cfghdrs@ + rm -f @cfgoutputs@ + rm -rf @objroot@autom4te.cache + +relclean : distclean + rm -f @objroot@configure + +# Include Makefile.inc files in subdirectories. +include $(dir_names:%=%/Makefile.inc) + +# +# Re-configuration rules. +# +ifeq (@enable_autogen@, 1) +@srcroot@configure : @srcroot@configure.ac + cd ./@srcroot@ && $(AUTOCONF) + +@objroot@config.status : @srcroot@configure + ./@objroot@config.status --recheck + +# cfghdrs rules. +@srcroot@cfghdrs.stamp.in : @srcroot@configure.ac + echo stamp > @srcroot@cfghdrs.stamp.in + +$(patsubst %, @srcroot@%.in, @cfghdrs@) : @objroot@config.status + +@objroot@cfghdrs.stamp : $(patsubst %, @srcroot@%.in, @cfghdrs@) + ./@objroot@config.status + echo stamp > $@ + +$(filter-out @objroot@cfghdrs.stamp, @cfghdrs@) : @objroot@cfghdrs.stamp + +# cfgoutputs rules. +@srcroot@cfgoutputs.stamp.in : @srcroot@configure.ac + echo stamp > @srcroot@cfgoutputs.stamp.in + +$(patsubst %, @srcroot@%.in, @cfgoutputs@) : @objroot@config.status + +@objroot@cfgoutputs.stamp : $(patsubst %, @srcroot@%.in, @cfgoutputs@) + ./@objroot@config.status + +$(filter-out \ + @objroot@cfgoutputs.stamp, \ + $(patsubst %, @objroot@%, @cfgoutputs@)) : @objroot@cfgoutputs.stamp +endif diff --git a/setup/xar-1.5.2/TODO b/setup/xar-1.5.2/TODO new file mode 100644 index 0000000..1963cde --- /dev/null +++ b/setup/xar-1.5.2/TODO @@ -0,0 +1,5 @@ +The xar TODO exists primarily on the wiki site at: +http://wiki.opendarwin.org/index.php/Xar:Todo + +Find new home for wiki + diff --git a/setup/xar-1.5.2/cfghdrs.stamp b/setup/xar-1.5.2/cfghdrs.stamp new file mode 100644 index 0000000..ba21239 --- /dev/null +++ b/setup/xar-1.5.2/cfghdrs.stamp @@ -0,0 +1,2 @@ +/* cfghdrs.stamp. Generated by configure. */ +stamp diff --git a/setup/xar-1.5.2/cfghdrs.stamp.in b/setup/xar-1.5.2/cfghdrs.stamp.in new file mode 100644 index 0000000..859afb1 --- /dev/null +++ b/setup/xar-1.5.2/cfghdrs.stamp.in @@ -0,0 +1 @@ +stamp diff --git a/setup/xar-1.5.2/cfgoutputs.stamp b/setup/xar-1.5.2/cfgoutputs.stamp new file mode 100644 index 0000000..859afb1 --- /dev/null +++ b/setup/xar-1.5.2/cfgoutputs.stamp @@ -0,0 +1 @@ +stamp diff --git a/setup/xar-1.5.2/cfgoutputs.stamp.in b/setup/xar-1.5.2/cfgoutputs.stamp.in new file mode 100644 index 0000000..859afb1 --- /dev/null +++ b/setup/xar-1.5.2/cfgoutputs.stamp.in @@ -0,0 +1 @@ +stamp diff --git a/setup/xar-1.5.2/config.guess b/setup/xar-1.5.2/config.guess new file mode 100755 index 0000000..ad5281e --- /dev/null +++ b/setup/xar-1.5.2/config.guess @@ -0,0 +1,1466 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-08-03' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/setup/xar-1.5.2/config.log b/setup/xar-1.5.2/config.log new file mode 100644 index 0000000..55e7c22 --- /dev/null +++ b/setup/xar-1.5.2/config.log @@ -0,0 +1,2138 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xar configure 1.5.2, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = ubuntu64 +uname -m = x86_64 +uname -r = 4.8.0-46-generic +uname -s = Linux +uname -v = #49~16.04.1-Ubuntu SMP Fri Mar 31 14:51:03 UTC 2017 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /snap/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1429: checking for gcc +configure:1445: found /usr/bin/gcc +configure:1455: result: gcc +configure:1699: checking for C compiler version +configure:1702: gcc --version &5 +gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:1705: $? = 0 +configure:1707: gcc -v &5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) +configure:1710: $? = 0 +configure:1712: gcc -V &5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:1715: $? = 1 +configure:1738: checking for C compiler default output file name +configure:1741: gcc conftest.c >&5 +configure:1744: $? = 0 +configure:1790: result: a.out +configure:1795: checking whether the C compiler works +configure:1801: ./a.out +configure:1804: $? = 0 +configure:1821: result: yes +configure:1828: checking whether we are cross compiling +configure:1830: result: no +configure:1833: checking for suffix of executables +configure:1835: gcc -o conftest conftest.c >&5 +configure:1838: $? = 0 +configure:1863: result: +configure:1869: checking for suffix of object files +configure:1890: gcc -c conftest.c >&5 +configure:1893: $? = 0 +configure:1915: result: o +configure:1919: checking whether we are using the GNU C compiler +configure:1943: gcc -c conftest.c >&5 +configure:1949: $? = 0 +configure:1953: test -z + || test ! -s conftest.err +configure:1956: $? = 0 +configure:1959: test -s conftest.o +configure:1962: $? = 0 +configure:1975: result: yes +configure:1981: checking whether gcc accepts -g +configure:2002: gcc -c -g conftest.c >&5 +configure:2008: $? = 0 +configure:2012: test -z + || test ! -s conftest.err +configure:2015: $? = 0 +configure:2018: test -s conftest.o +configure:2021: $? = 0 +configure:2032: result: yes +configure:2049: checking for gcc option to accept ANSI C +configure:2119: gcc -c conftest.c >&5 +configure:2125: $? = 0 +configure:2129: test -z + || test ! -s conftest.err +configure:2132: $? = 0 +configure:2135: test -s conftest.o +configure:2138: $? = 0 +configure:2156: result: none needed +configure:2174: gcc -c conftest.c >&5 +conftest.c:2:3: error: unknown type name 'choke' + choke me + ^ +conftest.c:2:3: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input +configure:2180: $? = 1 +configure: failed program was: +| #ifndef __cplusplus +| choke me +| #endif +configure:2321: checking for special C compiler options needed for large files +configure:2420: result: no +configure:2426: checking for _FILE_OFFSET_BITS value needed for large files +configure:2457: gcc -c conftest.c >&5 +configure:2463: $? = 0 +configure:2467: test -z + || test ! -s conftest.err +configure:2470: $? = 0 +configure:2473: test -s conftest.o +configure:2476: $? = 0 +configure:2541: result: no +configure:2551: checking for _LARGE_FILES value needed for large files +configure:2582: gcc -c conftest.c >&5 +configure:2588: $? = 0 +configure:2592: test -z + || test ! -s conftest.err +configure:2595: $? = 0 +configure:2598: test -s conftest.o +configure:2601: $? = 0 +configure:2666: result: no +configure:2692: checking how to run the C preprocessor +configure:2727: gcc -E conftest.c +configure:2733: $? = 0 +configure:2765: gcc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory +compilation terminated. +configure:2771: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| /* end confdefs.h. */ +| #include +configure:2810: result: gcc -E +configure:2834: gcc -E conftest.c +configure:2840: $? = 0 +configure:2872: gcc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory +compilation terminated. +configure:2878: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| /* end confdefs.h. */ +| #include +configure:2960: checking for a BSD-compatible install +configure:3015: result: /usr/bin/install -c +configure:3028: checking for ld +configure:3046: found /usr/bin/ld +configure:3058: result: /usr/bin/ld +configure:3067: checking for ar +configure:3085: found /usr/bin/ar +configure:3097: result: /usr/bin/ar +configure:3106: checking for ranlib +configure:3124: found /usr/bin/ranlib +configure:3136: result: /usr/bin/ranlib +configure:3145: checking for autoconf +configure:3178: result: no +configure:3184: checking whether to build shared libraries +configure:3193: result: yes +configure:3197: checking whether to build static libraries +configure:3206: result: yes +configure:3218: checking build system type +configure:3236: result: x86_64-unknown-linux-gnu +configure:3244: checking host system type +configure:3258: result: x86_64-unknown-linux-gnu +configure:3386: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:10:21: fatal error: sys/acl.h: No such file or directory +compilation terminated. +configure:3392: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| /* end confdefs.h. */ +| #include +| #include +| int +| main () +| { +| acl_t a +| ; +| return 0; +| } +configure:3419: checking for egrep +configure:3429: result: grep -E +configure:3434: checking for ANSI C header files +configure:3459: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3465: $? = 0 +configure:3469: test -z + || test ! -s conftest.err +configure:3472: $? = 0 +configure:3475: test -s conftest.o +configure:3478: $? = 0 +configure:3567: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:26:7: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration] + exit(2); + ^ +conftest.c:26:7: warning: incompatible implicit declaration of built-in function 'exit' +conftest.c:26:7: note: include '' or provide a declaration of 'exit' +conftest.c:27:3: warning: incompatible implicit declaration of built-in function 'exit' + exit (0); + ^ +conftest.c:27:3: note: include '' or provide a declaration of 'exit' +configure:3570: $? = 0 +configure:3572: ./conftest +configure:3575: $? = 0 +configure:3590: result: yes +configure:3614: checking for sys/types.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for sys/stat.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for stdlib.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for string.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for memory.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for strings.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for inttypes.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for stdint.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3614: checking for unistd.h +configure:3630: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3636: $? = 0 +configure:3640: test -z + || test ! -s conftest.err +configure:3643: $? = 0 +configure:3646: test -s conftest.o +configure:3649: $? = 0 +configure:3660: result: yes +configure:3691: checking ext2fs/ext2_fs.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:53:28: fatal error: ext2fs/ext2_fs.h: No such file or directory +compilation terminated. +configure:3709: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| #include +configure:3732: result: no +configure:3736: checking ext2fs/ext2_fs.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +conftest.c:19:28: fatal error: ext2fs/ext2_fs.h: No such file or directory +compilation terminated. +configure:3752: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include +configure:3772: result: no +configure:3807: checking for ext2fs/ext2_fs.h +configure:3814: result: no +configure:3691: checking sys/statfs.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3709: $? = 0 +configure:3713: test -z + || test ! -s conftest.err +configure:3716: $? = 0 +configure:3719: test -s conftest.o +configure:3722: $? = 0 +configure:3732: result: yes +configure:3736: checking sys/statfs.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +configure:3752: $? = 0 +configure:3772: result: yes +configure:3807: checking for sys/statfs.h +configure:3814: result: yes +configure:3691: checking sys/xattr.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3709: $? = 0 +configure:3713: test -z + || test ! -s conftest.err +configure:3716: $? = 0 +configure:3719: test -s conftest.o +configure:3722: $? = 0 +configure:3732: result: yes +configure:3736: checking sys/xattr.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +configure:3752: $? = 0 +configure:3772: result: yes +configure:3807: checking for sys/xattr.h +configure:3814: result: yes +configure:3691: checking sys/param.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3709: $? = 0 +configure:3713: test -z + || test ! -s conftest.err +configure:3716: $? = 0 +configure:3719: test -s conftest.o +configure:3722: $? = 0 +configure:3732: result: yes +configure:3736: checking sys/param.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +configure:3752: $? = 0 +configure:3772: result: yes +configure:3807: checking for sys/param.h +configure:3814: result: yes +configure:3691: checking sys/extattr.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:56:25: fatal error: sys/extattr.h: No such file or directory +compilation terminated. +configure:3709: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| #include +configure:3732: result: no +configure:3736: checking sys/extattr.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +conftest.c:22:25: fatal error: sys/extattr.h: No such file or directory +compilation terminated. +configure:3752: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| /* end confdefs.h. */ +| #include +configure:3772: result: no +configure:3807: checking for sys/extattr.h +configure:3814: result: no +configure:3691: checking libutil.h usability +configure:3703: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:56:21: fatal error: libutil.h: No such file or directory +compilation terminated. +configure:3709: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| #include +configure:3732: result: no +configure:3736: checking libutil.h presence +configure:3746: gcc -E -D_GNU_SOURCE conftest.c +conftest.c:22:21: fatal error: libutil.h: No such file or directory +compilation terminated. +configure:3752: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| /* end confdefs.h. */ +| #include +configure:3772: result: no +configure:3807: checking for libutil.h +configure:3814: result: no +configure:3831: checking for lgetxattr +configure:3888: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3894: $? = 0 +configure:3898: test -z + || test ! -s conftest.err +configure:3901: $? = 0 +configure:3904: test -s conftest +configure:3907: $? = 0 +configure:3919: result: yes +configure:3933: checking for lsetxattr +configure:3990: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:3996: $? = 0 +configure:4000: test -z + || test ! -s conftest.err +configure:4003: $? = 0 +configure:4006: test -s conftest +configure:4009: $? = 0 +configure:4021: result: yes +configure:4035: checking for getxattr +configure:4092: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:4098: $? = 0 +configure:4102: test -z + || test ! -s conftest.err +configure:4105: $? = 0 +configure:4108: test -s conftest +configure:4111: $? = 0 +configure:4123: result: yes +configure:4137: checking for setxattr +configure:4194: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:4200: $? = 0 +configure:4204: test -z + || test ! -s conftest.err +configure:4207: $? = 0 +configure:4210: test -s conftest +configure:4213: $? = 0 +configure:4225: result: yes +configure:4239: checking for getattrlist +configure:4296: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +/tmp/ccOF3VsK.o: In function `main': +/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/conftest.c:66: undefined reference to `getattrlist' +/tmp/ccOF3VsK.o:(.data+0x0): undefined reference to `getattrlist' +collect2: error: ld returned 1 exit status +configure:4302: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| /* end confdefs.h. */ +| /* Define getattrlist to an innocuous variant, in case declares getattrlist. +| For example, HP-UX 11i declares gettimeofday. */ +| #define getattrlist innocuous_getattrlist +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char getattrlist (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef getattrlist +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| { +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char getattrlist (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined (__stub_getattrlist) || defined (__stub___getattrlist) +| choke me +| #else +| char (*f) () = getattrlist; +| #endif +| #ifdef __cplusplus +| } +| #endif +| +| int +| main () +| { +| return f != getattrlist; +| ; +| return 0; +| } +configure:4327: result: no +configure:4341: checking for setattrlist +configure:4398: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +/tmp/cceJe8HL.o: In function `main': +/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/conftest.c:66: undefined reference to `setattrlist' +/tmp/cceJe8HL.o:(.data+0x0): undefined reference to `setattrlist' +collect2: error: ld returned 1 exit status +configure:4404: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| /* end confdefs.h. */ +| /* Define setattrlist to an innocuous variant, in case declares setattrlist. +| For example, HP-UX 11i declares gettimeofday. */ +| #define setattrlist innocuous_setattrlist +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char setattrlist (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef setattrlist +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| { +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char setattrlist (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined (__stub_setattrlist) || defined (__stub___setattrlist) +| choke me +| #else +| char (*f) () = setattrlist; +| #endif +| #ifdef __cplusplus +| } +| #endif +| +| int +| main () +| { +| return f != setattrlist; +| ; +| return 0; +| } +configure:4429: result: no +configure:4443: checking for lchmod +configure:4500: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:55:1: error: unknown type name 'choke' + choke me + ^ +conftest.c:63:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' + int + ^ +configure:4506: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| /* end confdefs.h. */ +| /* Define lchmod to an innocuous variant, in case declares lchmod. +| For example, HP-UX 11i declares gettimeofday. */ +| #define lchmod innocuous_lchmod +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char lchmod (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef lchmod +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| { +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char lchmod (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined (__stub_lchmod) || defined (__stub___lchmod) +| choke me +| #else +| char (*f) () = lchmod; +| #endif +| #ifdef __cplusplus +| } +| #endif +| +| int +| main () +| { +| return f != lchmod; +| ; +| return 0; +| } +configure:4531: result: no +configure:4545: checking for lchown +configure:4602: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:4608: $? = 0 +configure:4612: test -z + || test ! -s conftest.err +configure:4615: $? = 0 +configure:4618: test -s conftest +configure:4621: $? = 0 +configure:4633: result: yes +configure:4647: checking for chflags +configure:4704: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c:56:1: error: unknown type name 'choke' + choke me + ^ +conftest.c:64:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' + int + ^ +configure:4710: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| /* end confdefs.h. */ +| /* Define chflags to an innocuous variant, in case declares chflags. +| For example, HP-UX 11i declares gettimeofday. */ +| #define chflags innocuous_chflags +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char chflags (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef chflags +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| { +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char chflags (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined (__stub_chflags) || defined (__stub___chflags) +| choke me +| #else +| char (*f) () = chflags; +| #endif +| #ifdef __cplusplus +| } +| #endif +| +| int +| main () +| { +| return f != chflags; +| ; +| return 0; +| } +configure:4735: result: no +configure:4749: checking for statvfs +configure:4806: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:4812: $? = 0 +configure:4816: test -z + || test ! -s conftest.err +configure:4819: $? = 0 +configure:4822: test -s conftest +configure:4825: $? = 0 +configure:4837: result: yes +configure:4851: checking for statfs +configure:4908: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:4914: $? = 0 +configure:4918: test -z + || test ! -s conftest.err +configure:4921: $? = 0 +configure:4924: test -s conftest +configure:4927: $? = 0 +configure:4939: result: yes +configure:4953: checking for strmode +configure:5010: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +/tmp/ccKYDFX2.o: In function `main': +/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/conftest.c:69: undefined reference to `strmode' +/tmp/ccKYDFX2.o:(.data+0x0): undefined reference to `strmode' +collect2: error: ld returned 1 exit status +configure:5016: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| /* Define strmode to an innocuous variant, in case declares strmode. +| For example, HP-UX 11i declares gettimeofday. */ +| #define strmode innocuous_strmode +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char strmode (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef strmode +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| { +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char strmode (); +| /* The GNU C library defines this for functions which it implements +| to always fail with ENOSYS. Some functions are actually named +| something starting with __ and the normal name is an alias. */ +| #if defined (__stub_strmode) || defined (__stub___strmode) +| choke me +| #else +| char (*f) () = strmode; +| #endif +| #ifdef __cplusplus +| } +| #endif +| +| int +| main () +| { +| return f != strmode; +| ; +| return 0; +| } +configure:5041: result: no +configure:5052: checking for struct statfs.f_fstypename +configure:5078: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:36:22: error: storage size of 'ac_aggr' isn't known + static struct statfs ac_aggr; + ^ +conftest.c:36:22: warning: unused variable 'ac_aggr' [-Wunused-variable] +configure:5084: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| #include +| #include +| +| int +| main () +| { +| static struct statfs ac_aggr; +| if (ac_aggr.f_fstypename) +| return 0; +| ; +| return 0; +| } +configure:5125: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:36:22: error: storage size of 'ac_aggr' isn't known + static struct statfs ac_aggr; + ^ +conftest.c:36:22: warning: unused variable 'ac_aggr' [-Wunused-variable] +configure:5131: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| #include +| #include +| +| int +| main () +| { +| static struct statfs ac_aggr; +| if (sizeof ac_aggr.f_fstypename) +| return 0; +| ; +| return 0; +| } +configure:5157: result: no +configure:5168: checking for struct statvfs.f_fstypename +configure:5192: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:35:12: error: 'struct statvfs' has no member named 'f_fstypename' + if (ac_aggr.f_fstypename) + ^ +conftest.c:34:23: warning: variable 'ac_aggr' set but not used [-Wunused-but-set-variable] + static struct statvfs ac_aggr; + ^ +configure:5198: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| +| int +| main () +| { +| static struct statvfs ac_aggr; +| if (ac_aggr.f_fstypename) +| return 0; +| ; +| return 0; +| } +configure:5237: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:35:19: error: 'struct statvfs' has no member named 'f_fstypename' + if (sizeof ac_aggr.f_fstypename) + ^ +conftest.c:34:23: warning: variable 'ac_aggr' set but not used [-Wunused-but-set-variable] + static struct statvfs ac_aggr; + ^ +configure:5243: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| +| int +| main () +| { +| static struct statvfs ac_aggr; +| if (sizeof ac_aggr.f_fstypename) +| return 0; +| ; +| return 0; +| } +configure:5269: result: no +configure:5280: checking for struct stat.st_flags +configure:5303: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:67:12: error: 'struct stat' has no member named 'st_flags' + if (ac_aggr.st_flags) + ^ +conftest.c:66:20: warning: variable 'ac_aggr' set but not used [-Wunused-but-set-variable] + static struct stat ac_aggr; + ^ +configure:5309: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| static struct stat ac_aggr; +| if (ac_aggr.st_flags) +| return 0; +| ; +| return 0; +| } +configure:5347: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +conftest.c: In function 'main': +conftest.c:67:19: error: 'struct stat' has no member named 'st_flags' + if (sizeof ac_aggr.st_flags) + ^ +conftest.c:66:20: warning: variable 'ac_aggr' set but not used [-Wunused-but-set-variable] + static struct stat ac_aggr; + ^ +configure:5353: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| static struct stat ac_aggr; +| if (sizeof ac_aggr.st_flags) +| return 0; +| ; +| return 0; +| } +configure:5379: result: no +configure:5391: checking for uid_t +configure:5415: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:5421: $? = 0 +configure:5425: test -z + || test ! -s conftest.err +configure:5428: $? = 0 +configure:5431: test -s conftest.o +configure:5434: $? = 0 +configure:5445: result: yes +configure:5448: checking size of uid_t +configure:5767: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:5770: $? = 0 +configure:5772: ./conftest +configure:5775: $? = 0 +configure:5798: result: 4 +configure:5829: checking for gid_t +configure:5853: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:5859: $? = 0 +configure:5863: test -z + || test ! -s conftest.err +configure:5866: $? = 0 +configure:5869: test -s conftest.o +configure:5872: $? = 0 +configure:5883: result: yes +configure:5886: checking size of gid_t +configure:6205: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:6208: $? = 0 +configure:6210: ./conftest +configure:6213: $? = 0 +configure:6236: result: 4 +configure:6267: checking for ino_t +configure:6291: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:6297: $? = 0 +configure:6301: test -z + || test ! -s conftest.err +configure:6304: $? = 0 +configure:6307: test -s conftest.o +configure:6310: $? = 0 +configure:6321: result: yes +configure:6324: checking size of ino_t +configure:6643: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:6646: $? = 0 +configure:6648: ./conftest +configure:6651: $? = 0 +configure:6674: result: 8 +configure:6713: checking for dev_t +configure:6737: gcc -c -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:6743: $? = 0 +configure:6747: test -z + || test ! -s conftest.err +configure:6750: $? = 0 +configure:6753: test -s conftest.o +configure:6756: $? = 0 +configure:6767: result: yes +configure:6770: checking size of dev_t +configure:7089: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:7092: $? = 0 +configure:7094: ./conftest +configure:7097: $? = 0 +configure:7120: result: 8 +configure:7160: checking for acl_get_file in -lacl +configure:7190: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c -lacl >&5 +/usr/bin/ld: cannot find -lacl +collect2: error: ld returned 1 exit status +configure:7196: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| #define SIZEOF_UID_T 4 +| #define UID_STRING RId32 +| #define UID_CAST (uint32_t) +| #define SIZEOF_GID_T 4 +| #define GID_STRING PRId32 +| #define GID_CAST (uint32_t) +| #define SIZEOF_INO_T 8 +| #define INO_STRING PRId64 +| #define INO_HEXSTRING PRIx64 +| #define INO_CAST (uint64_t) +| #define SIZEOF_DEV_T 8 +| #define DEV_STRING PRId64 +| #define DEV_HEXSTRING PRIx64 +| #define DEV_CAST (uint64_t) +| /* end confdefs.h. */ +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char acl_get_file (); +| int +| main () +| { +| acl_get_file (); +| ; +| return 0; +| } +configure:7222: result: no +configure:7236: checking for asprintf +configure:7293: gcc -o conftest -Wall -g -D_GNU_SOURCE conftest.c >&5 +configure:7299: $? = 0 +configure:7303: test -z + || test ! -s conftest.err +configure:7306: $? = 0 +configure:7309: test -s conftest +configure:7312: $? = 0 +configure:7324: result: yes +configure:7361: checking for xml2-config +configure:7379: found /usr/bin/xml2-config +configure:7391: result: /usr/bin/xml2-config +configure:7405: checking for libxml >= 2.6.11 +configure:7423: result: 2.9.3 +configure:7444: checking libxml/xmlwriter.h usability +configure:7456: gcc -c -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c >&5 +configure:7462: $? = 0 +configure:7466: test -z + || test ! -s conftest.err +configure:7469: $? = 0 +configure:7472: test -s conftest.o +configure:7475: $? = 0 +configure:7485: result: yes +configure:7489: checking libxml/xmlwriter.h presence +configure:7499: gcc -E -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c +configure:7505: $? = 0 +configure:7525: result: yes +configure:7560: checking for libxml/xmlwriter.h +configure:7567: result: yes +configure:7600: checking openssl/evp.h usability +configure:7612: gcc -c -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c >&5 +configure:7618: $? = 0 +configure:7622: test -z + || test ! -s conftest.err +configure:7625: $? = 0 +configure:7628: test -s conftest.o +configure:7631: $? = 0 +configure:7641: result: yes +configure:7645: checking openssl/evp.h presence +configure:7655: gcc -E -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c +configure:7661: $? = 0 +configure:7681: result: yes +configure:7716: checking for openssl/evp.h +configure:7723: result: yes +configure:7739: checking for OpenSSL_add_all_ciphers in -lcrypto +configure:7769: gcc -o conftest -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c -lcrypto -lxml2 >&5 +configure:7775: $? = 0 +configure:7779: test -z + || test ! -s conftest.err +configure:7782: $? = 0 +configure:7785: test -s conftest +configure:7788: $? = 0 +configure:7801: result: yes +configure:7835: checking zlib.h usability +configure:7847: gcc -c -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c >&5 +configure:7853: $? = 0 +configure:7857: test -z + || test ! -s conftest.err +configure:7860: $? = 0 +configure:7863: test -s conftest.o +configure:7866: $? = 0 +configure:7876: result: yes +configure:7880: checking zlib.h presence +configure:7890: gcc -E -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c +configure:7896: $? = 0 +configure:7916: result: yes +configure:7951: checking for zlib.h +configure:7958: result: yes +configure:7974: checking for deflate in -lz +configure:8004: gcc -o conftest -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c -lz -lcrypto -lxml2 >&5 +configure:8010: $? = 0 +configure:8014: test -z + || test ! -s conftest.err +configure:8017: $? = 0 +configure:8020: test -s conftest +configure:8023: $? = 0 +configure:8036: result: yes +configure:8070: checking bzlib.h usability +configure:8082: gcc -c -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c >&5 +conftest.c:82:19: fatal error: bzlib.h: No such file or directory +compilation terminated. +configure:8088: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| #define SIZEOF_UID_T 4 +| #define UID_STRING RId32 +| #define UID_CAST (uint32_t) +| #define SIZEOF_GID_T 4 +| #define GID_STRING PRId32 +| #define GID_CAST (uint32_t) +| #define SIZEOF_INO_T 8 +| #define INO_STRING PRId64 +| #define INO_HEXSTRING PRIx64 +| #define INO_CAST (uint64_t) +| #define SIZEOF_DEV_T 8 +| #define DEV_STRING PRId64 +| #define DEV_HEXSTRING PRIx64 +| #define DEV_CAST (uint64_t) +| #define HAVE_ASPRINTF 1 +| #define HAVE_OPENSSL_EVP_H 1 +| #define HAVE_LIBCRYPTO 1 +| #define HAVE_ZLIB_H 1 +| #define HAVE_LIBZ 1 +| /* end confdefs.h. */ +| #include +| #if HAVE_SYS_TYPES_H +| # include +| #endif +| #if HAVE_SYS_STAT_H +| # include +| #endif +| #if STDC_HEADERS +| # include +| # include +| #else +| # if HAVE_STDLIB_H +| # include +| # endif +| #endif +| #if HAVE_STRING_H +| # if !STDC_HEADERS && HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #if HAVE_STRINGS_H +| # include +| #endif +| #if HAVE_INTTYPES_H +| # include +| #else +| # if HAVE_STDINT_H +| # include +| # endif +| #endif +| #if HAVE_UNISTD_H +| # include +| #endif +| #include +configure:8111: result: no +configure:8115: checking bzlib.h presence +configure:8125: gcc -E -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c +conftest.c:48:19: fatal error: bzlib.h: No such file or directory +compilation terminated. +configure:8131: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| #define SIZEOF_UID_T 4 +| #define UID_STRING RId32 +| #define UID_CAST (uint32_t) +| #define SIZEOF_GID_T 4 +| #define GID_STRING PRId32 +| #define GID_CAST (uint32_t) +| #define SIZEOF_INO_T 8 +| #define INO_STRING PRId64 +| #define INO_HEXSTRING PRIx64 +| #define INO_CAST (uint64_t) +| #define SIZEOF_DEV_T 8 +| #define DEV_STRING PRId64 +| #define DEV_HEXSTRING PRIx64 +| #define DEV_CAST (uint64_t) +| #define HAVE_ASPRINTF 1 +| #define HAVE_OPENSSL_EVP_H 1 +| #define HAVE_LIBCRYPTO 1 +| #define HAVE_ZLIB_H 1 +| #define HAVE_LIBZ 1 +| /* end confdefs.h. */ +| #include +configure:8151: result: no +configure:8186: checking for bzlib.h +configure:8193: result: no +configure:8209: checking for BZ2_bzCompress in -lbz2 +configure:8239: gcc -o conftest -Wall -g -D_GNU_SOURCE -I/usr/include/libxml2 conftest.c -lbz2 -lz -lcrypto -lxml2 >&5 +/usr/bin/ld: cannot find -lbz2 +collect2: error: ld returned 1 exit status +configure:8245: $? = 1 +configure: failed program was: +| /* confdefs.h. */ +| +| #define PACKAGE_NAME "Xar" +| #define PACKAGE_TARNAME "xar" +| #define PACKAGE_VERSION "1.5.2" +| #define PACKAGE_STRING "Xar 1.5.2" +| #define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_STATFS_H 1 +| #define HAVE_SYS_XATTR_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_LGETXATTR 1 +| #define HAVE_LSETXATTR 1 +| #define HAVE_GETXATTR 1 +| #define HAVE_SETXATTR 1 +| #define HAVE_LCHOWN 1 +| #define HAVE_STATVFS 1 +| #define HAVE_STATFS 1 +| #define SIZEOF_UID_T 4 +| #define UID_STRING RId32 +| #define UID_CAST (uint32_t) +| #define SIZEOF_GID_T 4 +| #define GID_STRING PRId32 +| #define GID_CAST (uint32_t) +| #define SIZEOF_INO_T 8 +| #define INO_STRING PRId64 +| #define INO_HEXSTRING PRIx64 +| #define INO_CAST (uint64_t) +| #define SIZEOF_DEV_T 8 +| #define DEV_STRING PRId64 +| #define DEV_HEXSTRING PRIx64 +| #define DEV_CAST (uint64_t) +| #define HAVE_ASPRINTF 1 +| #define HAVE_OPENSSL_EVP_H 1 +| #define HAVE_LIBCRYPTO 1 +| #define HAVE_ZLIB_H 1 +| #define HAVE_LIBZ 1 +| /* end confdefs.h. */ +| +| /* Override any gcc2 internal prototype to avoid an error. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| /* We use char because int might match the return type of a gcc2 +| builtin and then its argument prototype would still apply. */ +| char BZ2_bzCompress (); +| int +| main () +| { +| BZ2_bzCompress (); +| ; +| return 0; +| } +configure:8271: result: no +configure:8394: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Xar config.status 1.5.2, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on ubuntu64 + +config.status:683: creating cfgoutputs.stamp +config.status:683: creating Makefile +config.status:683: creating include/xar.h +config.status:683: creating lib/Makefile.inc +config.status:683: creating lib/libxar.la.in +config.status:683: creating src/Makefile.inc +config.status:683: creating xar.spec +config.status:787: creating cfghdrs.stamp +config.status:965: cfghdrs.stamp is unchanged +config.status:787: creating include/config.h +config.status:965: include/config.h is unchanged + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_build_alias=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_func_asprintf=yes +ac_cv_func_chflags=no +ac_cv_func_getattrlist=no +ac_cv_func_getxattr=yes +ac_cv_func_lchmod=no +ac_cv_func_lchown=yes +ac_cv_func_lgetxattr=yes +ac_cv_func_lsetxattr=yes +ac_cv_func_setattrlist=no +ac_cv_func_setxattr=yes +ac_cv_func_statfs=yes +ac_cv_func_statvfs=yes +ac_cv_func_strmode=no +ac_cv_header_bzlib_h=no +ac_cv_header_ext2fs_ext2_fs_h=no +ac_cv_header_inttypes_h=yes +ac_cv_header_libutil_h=no +ac_cv_header_libxml_xmlwriter_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_openssl_evp_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_extattr_h=no +ac_cv_header_sys_param_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_statfs_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_sys_xattr_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_zlib_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_host_alias=x86_64-unknown-linux-gnu +ac_cv_lib_acl_acl_get_file=no +ac_cv_lib_bz2_BZ2_bzCompress=no +ac_cv_lib_crypto_OpenSSL_add_all_ciphers=yes +ac_cv_lib_z_deflate=yes +ac_cv_member_struct_stat_st_flags=no +ac_cv_member_struct_statfs_f_fstypename=no +ac_cv_member_struct_statvfs_f_fstypename=no +ac_cv_objext=o +ac_cv_path_AR=/usr/bin/ar +ac_cv_path_LD=/usr/bin/ld +ac_cv_path_RANLIB=/usr/bin/ranlib +ac_cv_path_XML2_CONFIG=/usr/bin/xml2-config +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_egrep='grep -E' +ac_cv_sizeof_dev_t=8 +ac_cv_sizeof_gid_t=4 +ac_cv_sizeof_ino_t=8 +ac_cv_sizeof_uid_t=4 +ac_cv_sys_file_offset_bits=no +ac_cv_sys_large_files=no +ac_cv_sys_largefile_CC=no +ac_cv_type_dev_t=yes +ac_cv_type_gid_t=yes +ac_cv_type_ino_t=yes +ac_cv_type_uid_t=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +AR='/usr/bin/ar' +AUTOCONF='' +BINDIR='/usr/local/bin' +CC='gcc' +CFLAGS='-Wall -g' +CPP='gcc -E' +CPPFLAGS=' -D_GNU_SOURCE -I/usr/include/libxml2' +DATADIR='/usr/local/share' +DEFS='-DHAVE_CONFIG_H' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='grep -E' +EXEEXT='' +INCLUDEDIR='/usr/local/include' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +LD='/usr/bin/ld' +LDFLAGS='' +LIBDIR='/usr/local/lib' +LIBOBJS='' +LIBS='-lz -lcrypto -lxml2' +LIB_REV='1' +LTLIBOBJS='' +MANDIR='/usr/local/man' +OBJEXT='o' +PACKAGE_BUGREPORT='xar-devel@googlegroups.com' +PACKAGE_NAME='Xar' +PACKAGE_STRING='Xar 1.5.2' +PACKAGE_TARNAME='xar' +PACKAGE_VERSION='1.5.2' +PATH_SEPARATOR=':' +PREFIX='/usr/local' +RANLIB='/usr/bin/ranlib' +RPATH='-Wl,-rpath,' +SHELL='/bin/bash' +XAR_MAJOR_VERSION='1' +XAR_MINOR_VERSION='5.2' +XAR_VERSION='1.5.2' +XML2_CONFIG='/usr/bin/xml2-config' +abi='elf' +abs_objroot='/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/' +abs_srcroot='/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/' +ac_ct_CC='gcc' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +cfghdrs='cfghdrs.stamp include/config.h' +cfgoutputs='cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec' +datadir='${prefix}/share' +enable_autogen='0' +exec_prefix='/usr/local' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +includedir='${prefix}/include' +infodir='${prefix}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localstatedir='${prefix}/var' +mandir='${prefix}/man' +objroot='' +oldincludedir='/usr/include' +prefix='/usr/local' +program_transform_name='s,x,x,' +sbindir='${exec_prefix}/sbin' +shared='yes' +sharedstatedir='${prefix}/com' +srcroot='' +static='yes' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define DEV_CAST (uint64_t) +#define DEV_HEXSTRING PRIx64 +#define DEV_STRING PRId64 +#define GID_CAST (uint32_t) +#define GID_STRING PRId32 +#define HAVE_ASPRINTF 1 +#define HAVE_GETXATTR 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LCHOWN 1 +#define HAVE_LGETXATTR 1 +#define HAVE_LIBCRYPTO 1 +#define HAVE_LIBZ 1 +#define HAVE_LSETXATTR 1 +#define HAVE_MEMORY_H 1 +#define HAVE_OPENSSL_EVP_H 1 +#define HAVE_SETXATTR 1 +#define HAVE_STATFS 1 +#define HAVE_STATVFS 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_STATFS_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_XATTR_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_ZLIB_H 1 +#define INO_CAST (uint64_t) +#define INO_HEXSTRING PRIx64 +#define INO_STRING PRId64 +#define PACKAGE_BUGREPORT "xar-devel@googlegroups.com" +#define PACKAGE_NAME "Xar" +#define PACKAGE_STRING "Xar 1.5.2" +#define PACKAGE_TARNAME "xar" +#define PACKAGE_VERSION "1.5.2" +#define SIZEOF_DEV_T 8 +#define SIZEOF_GID_T 4 +#define SIZEOF_INO_T 8 +#define SIZEOF_UID_T 4 +#define STDC_HEADERS 1 +#define UID_CAST (uint32_t) +#define UID_STRING RId32 + +configure: exit 0 diff --git a/setup/xar-1.5.2/config.status b/setup/xar-1.5.2/config.status new file mode 100755 index 0000000..73060da --- /dev/null +++ b/setup/xar-1.5.2/config.status @@ -0,0 +1,1014 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=${CONFIG_SHELL-/bin/bash} +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by Xar $as_me 1.5.2, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec" +config_headers=" cfghdrs.stamp include/config.h" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." +ac_cs_version="\ +Xar config.status 1.5.2 +configured by ./configure, generated by GNU Autoconf 2.59, + with options \"\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/usr/bin/install -c" +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + echo "running /bin/bash ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6 + exec /bin/bash ./configure $ac_configure_extra_args --no-create --no-recursion +fi + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "$cfgoutputs" ) CONFIG_FILES="$CONFIG_FILES $cfgoutputs" ;; + "$cfghdrs" ) CONFIG_HEADERS="$CONFIG_HEADERS $cfghdrs" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/bash,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,Xar,;t t +s,@PACKAGE_TARNAME@,xar,;t t +s,@PACKAGE_VERSION@,1.5.2,;t t +s,@PACKAGE_STRING@,Xar 1.5.2,;t t +s,@PACKAGE_BUGREPORT@,xar-devel@googlegroups.com,;t t +s,@exec_prefix@,/usr/local,;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,-lz -lcrypto -lxml2,;t t +s,@LIB_REV@,1,;t t +s,@XAR_MAJOR_VERSION@,1,;t t +s,@XAR_MINOR_VERSION@,5.2,;t t +s,@XAR_VERSION@,1.5.2,;t t +s,@srcroot@,,;t t +s,@abs_srcroot@,/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/,;t t +s,@objroot@,,;t t +s,@abs_objroot@,/home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/,;t t +s,@PREFIX@,/usr/local,;t t +s,@BINDIR@,/usr/local/bin,;t t +s,@DATADIR@,/usr/local/share,;t t +s,@LIBDIR@,/usr/local/lib,;t t +s,@INCLUDEDIR@,/usr/local/include,;t t +s,@MANDIR@,/usr/local/man,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-Wall -g,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@, -D_GNU_SOURCE -I/usr/include/libxml2,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@CPP@,gcc -E,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@LD@,/usr/bin/ld,;t t +s,@AR@,/usr/bin/ar,;t t +s,@RANLIB@,/usr/bin/ranlib,;t t +s,@AUTOCONF@,,;t t +s,@shared@,yes,;t t +s,@static@,yes,;t t +s,@build@,x86_64-unknown-linux-gnu,;t t +s,@build_cpu@,x86_64,;t t +s,@build_vendor@,unknown,;t t +s,@build_os@,linux-gnu,;t t +s,@host@,x86_64-unknown-linux-gnu,;t t +s,@host_cpu@,x86_64,;t t +s,@host_vendor@,unknown,;t t +s,@host_os@,linux-gnu,;t t +s,@abi@,elf,;t t +s,@RPATH@,-Wl,-rpath,,;t t +s,@enable_autogen@,0,;t t +s,@EGREP@,grep -E,;t t +s,@XML2_CONFIG@,/usr/bin/xml2-config,;t t +s,@cfghdrs@,cfghdrs.stamp include/config.h,;t t +s,@cfgoutputs@,cfgoutputs.stamp Makefile include/xar.h lib/Makefile.inc lib/libxar.la.in src/Makefile.inc xar.spec,;t t +s,@LIBOBJS@,,;t t +s,@LTLIBOBJS@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # grep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done + +{ (exit 0); exit 0; } diff --git a/setup/xar-1.5.2/config.sub b/setup/xar-1.5.2/config.sub new file mode 100755 index 0000000..1c366df --- /dev/null +++ b/setup/xar-1.5.2/config.sub @@ -0,0 +1,1579 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-07-08' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ms1 \ + | msp430 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | ms1-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/setup/xar-1.5.2/configure b/setup/xar-1.5.2/configure new file mode 100755 index 0000000..5cee62b --- /dev/null +++ b/setup/xar-1.5.2/configure @@ -0,0 +1,9448 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for Xar 1.5.2. +# +# Report bugs to . +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='Xar' +PACKAGE_TARNAME='xar' +PACKAGE_VERSION='1.5.2' +PACKAGE_STRING='Xar 1.5.2' +PACKAGE_BUGREPORT='xar-devel@googlegroups.com' + +ac_unique_file="LICENSE" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_default_prefix=/usr/local +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIB_REV XAR_MAJOR_VERSION XAR_MINOR_VERSION XAR_VERSION srcroot abs_srcroot objroot abs_objroot PREFIX BINDIR DATADIR LIBDIR INCLUDEDIR MANDIR CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LD AR RANLIB AUTOCONF shared static build build_cpu build_vendor build_os host host_cpu host_vendor host_os abi RPATH enable_autogen EGREP XML2_CONFIG cfghdrs cfgoutputs LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Xar 1.5.2 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Xar 1.5.2:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-largefile omit support for large files + --enable-shared build shared libraries [default=yes] + --enable-static build static libraries [default=yes] + --enable-autogen Automatically regenerate configure output + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-xml2-config libxml2 config program + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +Xar configure 1.5.2 +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xar $as_me 1.5.2, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LIB_REV=1 + + +XAR_MAJOR_VERSION="1" +XAR_MINOR_VERSION="5.2" +XAR_VERSION="${XAR_MAJOR_VERSION}.${XAR_MINOR_VERSION}" + + + + +srcroot=$srcdir +if test "x${srcroot}" = "x." ; then + srcroot="" +else + srcroot="${srcroot}/" +fi + +abs_srcroot="`cd "$srcdir"; pwd`/" + + +objroot="" + +abs_objroot="`pwd`/" + + +if test "x$prefix" = "xNONE" ; then + prefix="/usr/local" +fi +if test "x$exec_prefix" = "xNONE" ; then + exec_prefix=$prefix +fi +PREFIX=$prefix + +BINDIR=`eval echo $bindir` +BINDIR=`eval echo $BINDIR` + +DATADIR=`eval echo $datadir` +DATADIR=`eval echo $DATADIR` + +LIBDIR=`eval echo $libdir` +LIBDIR=`eval echo $LIBDIR` + +INCLUDEDIR=`eval echo $includedir` +INCLUDEDIR=`eval echo $INCLUDEDIR` + +MANDIR=`eval echo $mandir` +MANDIR=`eval echo $MANDIR` + + +cfgoutputs="cfgoutputs.stamp" +cfgoutputs="${cfgoutputs} Makefile" +cfgoutputs="${cfgoutputs} include/xar.h" +cfgoutputs="${cfgoutputs} lib/Makefile.inc" +cfgoutputs="${cfgoutputs} lib/libxar.la.in" +cfgoutputs="${cfgoutputs} src/Makefile.inc" +cfgoutputs="${cfgoutputs} xar.spec" + +cfghdrs="${objroot}cfghdrs.stamp" +cfghdrs="${cfghdrs} ${objroot}include/config.h" + +CFLAGS=$CFLAGS +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + +if test "x$CFLAGS" = "x" ; then + no_CFLAGS="yes" +fi +if test "x$no_CFLAGS" = "xyes" -a "x$GCC" = "xyes" ; then + CFLAGS="-Wall -g" +fi +if test "x$EXTRA_CFLAGS" != "x" ; then + CFLAGS="$CFLAGS $EXTRA_CFLAGS" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +# Extract the first word of "ld", so it can be a program name with args. +set dummy ld; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LD in + [\\/]* | ?:[\\/]*) + ac_cv_path_LD="$LD" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +LD=$ac_cv_path_LD + +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AR in + [\\/]* | ?:[\\/]*) + ac_cv_path_AR="$AR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +AR=$ac_cv_path_AR + +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RANLIB in + [\\/]* | ?:[\\/]*) + ac_cv_path_RANLIB="$RANLIB" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RANLIB="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +RANLIB=$ac_cv_path_RANLIB + +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "autoconf", so it can be a program name with args. +set dummy autoconf; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_AUTOCONF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AUTOCONF in + [\\/]* | ?:[\\/]*) + ac_cv_path_AUTOCONF="$AUTOCONF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_AUTOCONF="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +AUTOCONF=$ac_cv_path_AUTOCONF + +if test -n "$AUTOCONF"; then + echo "$as_me:$LINENO: result: $AUTOCONF" >&5 +echo "${ECHO_T}$AUTOCONF" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +#AC_ENABLE_SHARED +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + shared=$enableval +else + shared=yes +fi; +echo "$as_me:$LINENO: result: $shared" >&5 +echo "${ECHO_T}$shared" >&6 + +#AC_ENABLE_STATIC +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + static=$enableval +else + static=yes +fi; +echo "$as_me:$LINENO: result: $static" >&5 +echo "${ECHO_T}$static" >&6 + +# Make sure either enable_shared or enable_static is yes. +test "$shared" = "yes" || test "$static" = "yes" + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +case "${host}" in + *-*-darwin*) + abi="macho" + RPATH="" + ;; + *-*-freebsd*) + CFLAGS="$CFLAGS" + abi="elf" + RPATH="-Wl,-rpath," + ;; + *-*-linux*) + CFLAGS="$CFLAGS" + abi="elf" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + RPATH="-Wl,-rpath," + ;; + *-*-netbsd*) + echo "$as_me:$LINENO: checking ABI" >&5 +echo $ECHO_N "checking ABI... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __ELF__ +/* ELF */ +#else +#error aout +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + CFLAGS="$CFLAGS"; abi="elf" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +abi="aout" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + echo "$as_me:$LINENO: result: $abi" >&5 +echo "${ECHO_T}$abi" >&6 + RPATH="-Wl,-rpath," + ;; + *-*-solaris2*) + CFLAGS="$CFLAGS" + abi="elf" + RPATH="-Wl,-R," + ;; + *) + echo "$as_me:$LINENO: result: Unsupported operating system: ${host}" >&5 +echo "${ECHO_T}Unsupported operating system: ${host}" >&6 + abi="elf" + RPATH="-Wl,-rpath," + ;; +esac + + + +# Check whether --enable-autogen or --disable-autogen was given. +if test "${enable_autogen+set}" = set; then + enableval="$enable_autogen" + if test "x$enable_autogen" = "xno" ; then + enable_autogen="0" +else + enable_autogen="1" +fi + +else + enable_autogen="0" + +fi; + + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +acl_t a + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_ACL_H 1 +_ACEOF + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_header in ext2fs/ext2_fs.h sys/statfs.h sys/xattr.h sys/param.h sys/extattr.h libutil.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ----------------------------------------- ## +## Report this to xar-devel@googlegroups.com ## +## ----------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in lgetxattr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in lsetxattr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in getxattr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in setxattr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in getattrlist +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in setattrlist +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in lchmod +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in lchown +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in chflags +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in statvfs +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in statfs +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in strmode +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +echo "$as_me:$LINENO: checking for struct statfs.f_fstypename" >&5 +echo $ECHO_N "checking for struct statfs.f_fstypename... $ECHO_C" >&6 +if test "${ac_cv_member_struct_statfs_f_fstypename+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +static struct statfs ac_aggr; +if (ac_aggr.f_fstypename) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_statfs_f_fstypename=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +static struct statfs ac_aggr; +if (sizeof ac_aggr.f_fstypename) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_statfs_f_fstypename=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_statfs_f_fstypename=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_fstypename" >&5 +echo "${ECHO_T}$ac_cv_member_struct_statfs_f_fstypename" >&6 +if test $ac_cv_member_struct_statfs_f_fstypename = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATFS_F_FSTYPENAME 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking for struct statvfs.f_fstypename" >&5 +echo $ECHO_N "checking for struct statvfs.f_fstypename... $ECHO_C" >&6 +if test "${ac_cv_member_struct_statvfs_f_fstypename+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static struct statvfs ac_aggr; +if (ac_aggr.f_fstypename) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_statvfs_f_fstypename=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +static struct statvfs ac_aggr; +if (sizeof ac_aggr.f_fstypename) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_statvfs_f_fstypename=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_statvfs_f_fstypename=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_statvfs_f_fstypename" >&5 +echo "${ECHO_T}$ac_cv_member_struct_statvfs_f_fstypename" >&6 +if test $ac_cv_member_struct_statvfs_f_fstypename = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATVFS_F_FSTYPENAME 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_flags" >&5 +echo $ECHO_N "checking for struct stat.st_flags... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_flags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_flags) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_flags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (sizeof ac_aggr.st_flags) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_flags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_stat_st_flags=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_flags" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_flags" >&6 +if test $ac_cv_member_struct_stat_st_flags = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_FLAGS 1 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking for uid_t" >&5 +echo $ECHO_N "checking for uid_t... $ECHO_C" >&6 +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uid_t *) 0) + return 0; +if (sizeof (uid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uid_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6 + +echo "$as_me:$LINENO: checking size of uid_t" >&5 +echo $ECHO_N "checking size of uid_t... $ECHO_C" >&6 +if test "${ac_cv_sizeof_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_uid_t" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (uid_t))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (uid_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (uid_t))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (uid_t))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (uid_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_uid_t=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (uid_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (uid_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (uid_t)); } +unsigned long ulongval () { return (long) (sizeof (uid_t)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (uid_t))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (uid_t)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (uid_t)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_uid_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (uid_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (uid_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_uid_t=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_uid_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_uid_t" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UID_T $ac_cv_sizeof_uid_t +_ACEOF + + +if test $ac_cv_sizeof_uid_t = "4"; then +cat >>confdefs.h <<\_ACEOF +#define UID_STRING RId32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define UID_CAST (uint32_t) +_ACEOF + +elif test $ac_cv_sizeof_uid_t = "8"; then +cat >>confdefs.h <<\_ACEOF +#define UID_STRING PRId64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define UID_CAST (uint64_t) +_ACEOF + +else +{ { echo "$as_me:$LINENO: error: can not detect the size of your system's uid_t type" >&5 +echo "$as_me: error: can not detect the size of your system's uid_t type" >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:$LINENO: checking for gid_t" >&5 +echo $ECHO_N "checking for gid_t... $ECHO_C" >&6 +if test "${ac_cv_type_gid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((gid_t *) 0) + return 0; +if (sizeof (gid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_gid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_gid_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_gid_t" >&5 +echo "${ECHO_T}$ac_cv_type_gid_t" >&6 + +echo "$as_me:$LINENO: checking size of gid_t" >&5 +echo $ECHO_N "checking size of gid_t... $ECHO_C" >&6 +if test "${ac_cv_sizeof_gid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_gid_t" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (gid_t))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (gid_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (gid_t))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (gid_t))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (gid_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_gid_t=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (gid_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (gid_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (gid_t)); } +unsigned long ulongval () { return (long) (sizeof (gid_t)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (gid_t))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (gid_t)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (gid_t)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_gid_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (gid_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (gid_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_gid_t=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_gid_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_gid_t" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_GID_T $ac_cv_sizeof_gid_t +_ACEOF + + +if test $ac_cv_sizeof_gid_t = "4"; then +cat >>confdefs.h <<\_ACEOF +#define GID_STRING PRId32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define GID_CAST (uint32_t) +_ACEOF + +elif test $ac_cv_sizeof_gid_t = "8"; then +cat >>confdefs.h <<\_ACEOF +#define GID_STRING PRId64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define GID_CAST (uint64_t) +_ACEOF + +else +{ { echo "$as_me:$LINENO: error: can not detect the size of your system's gid_t type" >&5 +echo "$as_me: error: can not detect the size of your system's gid_t type" >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:$LINENO: checking for ino_t" >&5 +echo $ECHO_N "checking for ino_t... $ECHO_C" >&6 +if test "${ac_cv_type_ino_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ino_t *) 0) + return 0; +if (sizeof (ino_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ino_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ino_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5 +echo "${ECHO_T}$ac_cv_type_ino_t" >&6 + +echo "$as_me:$LINENO: checking size of ino_t" >&5 +echo $ECHO_N "checking size of ino_t... $ECHO_C" >&6 +if test "${ac_cv_sizeof_ino_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_ino_t" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (ino_t))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (ino_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (ino_t))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (ino_t))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (ino_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_ino_t=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (ino_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (ino_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (ino_t)); } +unsigned long ulongval () { return (long) (sizeof (ino_t)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (ino_t))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (ino_t)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (ino_t)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_ino_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (ino_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (ino_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_ino_t=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_ino_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_ino_t" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INO_T $ac_cv_sizeof_ino_t +_ACEOF + + +if test $ac_cv_sizeof_ino_t = "4"; then +cat >>confdefs.h <<\_ACEOF +#define INO_STRING PRId32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define INO_HEXSTRING PRIx32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define INO_CAST (uint32_t) +_ACEOF + +elif test $ac_cv_sizeof_ino_t = "8"; then +cat >>confdefs.h <<\_ACEOF +#define INO_STRING PRId64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define INO_HEXSTRING PRIx64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define INO_CAST (uint64_t) +_ACEOF + +else +{ { echo "$as_me:$LINENO: error: can not detect the size of your system's ino_t type" >&5 +echo "$as_me: error: can not detect the size of your system's ino_t type" >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:$LINENO: checking for dev_t" >&5 +echo $ECHO_N "checking for dev_t... $ECHO_C" >&6 +if test "${ac_cv_type_dev_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((dev_t *) 0) + return 0; +if (sizeof (dev_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_dev_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_dev_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_dev_t" >&5 +echo "${ECHO_T}$ac_cv_type_dev_t" >&6 + +echo "$as_me:$LINENO: checking size of dev_t" >&5 +echo $ECHO_N "checking size of dev_t... $ECHO_C" >&6 +if test "${ac_cv_sizeof_dev_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_dev_t" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (dev_t))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (dev_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (dev_t))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (dev_t))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (dev_t))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_dev_t=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (dev_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (dev_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (dev_t)); } +unsigned long ulongval () { return (long) (sizeof (dev_t)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (dev_t))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (dev_t)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (dev_t)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_dev_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (dev_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (dev_t), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_dev_t=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_dev_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_dev_t" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DEV_T $ac_cv_sizeof_dev_t +_ACEOF + + +if test $ac_cv_sizeof_dev_t = "4"; then +cat >>confdefs.h <<\_ACEOF +#define DEV_STRING PRId32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define DEV_HEXSTRING PRIx32 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define DEV_CAST (uint32_t) +_ACEOF + +elif test $ac_cv_sizeof_dev_t = "8"; then +cat >>confdefs.h <<\_ACEOF +#define DEV_STRING PRId64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define DEV_HEXSTRING PRIx64 +_ACEOF + +cat >>confdefs.h <<\_ACEOF +#define DEV_CAST (uint64_t) +_ACEOF + +else +{ { echo "$as_me:$LINENO: error: can not detect the size of your system's dev_t type" >&5 +echo "$as_me: error: can not detect the size of your system's dev_t type" >&2;} + { (exit 1); exit 1; }; } +fi + + +echo "$as_me:$LINENO: checking for acl_get_file in -lacl" >&5 +echo $ECHO_N "checking for acl_get_file in -lacl... $ECHO_C" >&6 +if test "${ac_cv_lib_acl_acl_get_file+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lacl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char acl_get_file (); +int +main () +{ +acl_get_file (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_acl_acl_get_file=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_acl_acl_get_file=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_file" >&5 +echo "${ECHO_T}$ac_cv_lib_acl_acl_get_file" >&6 +if test $ac_cv_lib_acl_acl_get_file = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBACL 1 +_ACEOF + + LIBS="-lacl $LIBS" + +fi + + + + +echo "$as_me:$LINENO: checking for asprintf" >&5 +echo $ECHO_N "checking for asprintf... $ECHO_C" >&6 +if test "${ac_cv_func_asprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define asprintf to an innocuous variant, in case declares asprintf. + For example, HP-UX 11i declares gettimeofday. */ +#define asprintf innocuous_asprintf + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char asprintf (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef asprintf + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char asprintf (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_asprintf) || defined (__stub___asprintf) +choke me +#else +char (*f) () = asprintf; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != asprintf; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_asprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_asprintf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_asprintf" >&5 +echo "${ECHO_T}$ac_cv_func_asprintf" >&6 +if test $ac_cv_func_asprintf = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ASPRINTF 1 +_ACEOF + +fi + + +LIBXML2_VERSION_MIN=2.6.11 + +have_libxml2="1" + + +# Check whether --with-xml2-config or --without-xml2-config was given. +if test "${with_xml2_config+set}" = set; then + withval="$with_xml2_config" + if test "x${with_xml2_config}" = "xno" ; then + XML2_CONFIG= +else + XML2_CONFIG="${with_xml2_config}" +fi + +else + XML2_CONFIG= + +fi; +if test "x${XML2_CONFIG}" != "x" ; then + if test ! -x "${XML2_CONFIG}" ; then + { { echo "$as_me:$LINENO: error: Unusable or missing xml2-config: ${XML2_CONFIG}" >&5 +echo "$as_me: error: Unusable or missing xml2-config: ${XML2_CONFIG}" >&2;} + { (exit 1); exit 1; }; } + fi +else + # Extract the first word of "xml2-config", so it can be a program name with args. +set dummy xml2-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XML2_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $XML2_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in ${PATH} +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +XML2_CONFIG=$ac_cv_path_XML2_CONFIG + +if test -n "$XML2_CONFIG"; then + echo "$as_me:$LINENO: result: $XML2_CONFIG" >&5 +echo "${ECHO_T}$XML2_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test "x${XML2_CONFIG}" = "x" ; then + { { echo "$as_me:$LINENO: error: Cannot configure without xml2-config" >&5 +echo "$as_me: error: Cannot configure without xml2-config" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +echo "$as_me:$LINENO: checking for libxml >= ${LIBXML2_VERSION_MIN}" >&5 +echo $ECHO_N "checking for libxml >= ${LIBXML2_VERSION_MIN}... $ECHO_C" >&6 +LIBXML2_FOUND=`2>&1 ${XML2_CONFIG} --version` +LIBXML2_MAJOR=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $1}'` +LIBXML2_MINOR=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $2}' | tr a-z " " |awk '{print $1}'` +LIBXML2_BRANCH=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $3}' | tr a-z " " |awk '{print $1}'` +if test "x${LIBXML2_BRANCH}" = "x" ; then + LIBXML2_BRANCH=0 +fi +LIBXML2_MAJOR_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $1}'` +LIBXML2_MINOR_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $2}'` +LIBXML2_BRANCH_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $3}'` +if test ${LIBXML2_MAJOR} -gt ${LIBXML2_MAJOR_MIN} \ + -o ${LIBXML2_MAJOR} -eq ${LIBXML2_MAJOR_MIN} \ + -a ${LIBXML2_MINOR} -gt ${LIBXML2_MINOR_MIN} \ + -o ${LIBXML2_MAJOR} -eq ${LIBXML2_MAJOR_MIN} \ + -a ${LIBXML2_MINOR} -eq ${LIBXML2_MINOR_MIN} \ + -a ${LIBXML2_BRANCH} -ge $LIBXML2_BRANCH_MIN ; then + echo "$as_me:$LINENO: result: ${LIBXML2_MAJOR}.${LIBXML2_MINOR}.${LIBXML2_BRANCH}" >&5 +echo "${ECHO_T}${LIBXML2_MAJOR}.${LIBXML2_MINOR}.${LIBXML2_BRANCH}" >&6 + have_libxml2="1" + CPPFLAGS="${CPPFLAGS} `${XML2_CONFIG} --cflags`" + LIBS="${LIBS} `${XML2_CONFIG} --libs`" +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + have_libxml2="0" +fi +if test "x${have_libxml2}" = "x1" ; then + if test "${ac_cv_header_libxml_xmlwriter_h+set}" = set; then + echo "$as_me:$LINENO: checking for libxml/xmlwriter.h" >&5 +echo $ECHO_N "checking for libxml/xmlwriter.h... $ECHO_C" >&6 +if test "${ac_cv_header_libxml_xmlwriter_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libxml_xmlwriter_h" >&5 +echo "${ECHO_T}$ac_cv_header_libxml_xmlwriter_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking libxml/xmlwriter.h usability" >&5 +echo $ECHO_N "checking libxml/xmlwriter.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking libxml/xmlwriter.h presence" >&5 +echo $ECHO_N "checking libxml/xmlwriter.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libxml/xmlwriter.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: libxml/xmlwriter.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ----------------------------------------- ## +## Report this to xar-devel@googlegroups.com ## +## ----------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for libxml/xmlwriter.h" >&5 +echo $ECHO_N "checking for libxml/xmlwriter.h... $ECHO_C" >&6 +if test "${ac_cv_header_libxml_xmlwriter_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libxml_xmlwriter_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libxml_xmlwriter_h" >&5 +echo "${ECHO_T}$ac_cv_header_libxml_xmlwriter_h" >&6 + +fi +if test $ac_cv_header_libxml_xmlwriter_h = yes; then + : +else + have_libxml2="0" +fi + + +fi +if test "x${have_libxml2}" = "x0" ; then + { { echo "$as_me:$LINENO: error: Cannot build without libxml2" >&5 +echo "$as_me: error: Cannot build without libxml2" >&2;} + { (exit 1); exit 1; }; } +fi + +have_libcrypto="1" + +for ac_header in openssl/evp.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ----------------------------------------- ## +## Report this to xar-devel@googlegroups.com ## +## ----------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + have_libcrypto="0" +fi + +done + + +echo "$as_me:$LINENO: checking for OpenSSL_add_all_ciphers in -lcrypto" >&5 +echo $ECHO_N "checking for OpenSSL_add_all_ciphers in -lcrypto... $ECHO_C" >&6 +if test "${ac_cv_lib_crypto_OpenSSL_add_all_ciphers+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcrypto $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char OpenSSL_add_all_ciphers (); +int +main () +{ +OpenSSL_add_all_ciphers (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_crypto_OpenSSL_add_all_ciphers=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_crypto_OpenSSL_add_all_ciphers=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_OpenSSL_add_all_ciphers" >&5 +echo "${ECHO_T}$ac_cv_lib_crypto_OpenSSL_add_all_ciphers" >&6 +if test $ac_cv_lib_crypto_OpenSSL_add_all_ciphers = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBCRYPTO 1 +_ACEOF + + LIBS="-lcrypto $LIBS" + +else + have_libcrypto="0" +fi + +if test "x${have_libcrypto}" = "x0" ; then + { { echo "$as_me:$LINENO: error: Cannot build without libcrypto (OpenSSL)" >&5 +echo "$as_me: error: Cannot build without libcrypto (OpenSSL)" >&2;} + { (exit 1); exit 1; }; } +fi + +have_libz="1" + +for ac_header in zlib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ----------------------------------------- ## +## Report this to xar-devel@googlegroups.com ## +## ----------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + have_libz="0" +fi + +done + + +echo "$as_me:$LINENO: checking for deflate in -lz" >&5 +echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6 +if test "${ac_cv_lib_z_deflate+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char deflate (); +int +main () +{ +deflate (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_z_deflate=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_z_deflate=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5 +echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6 +if test $ac_cv_lib_z_deflate = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + have_libz="0" +fi + +if test "x${have_libz}" = "x0" ; then + { { echo "$as_me:$LINENO: error: Cannot build without libz" >&5 +echo "$as_me: error: Cannot build without libz" >&2;} + { (exit 1); exit 1; }; } +fi + +have_libbz2="1" + +for ac_header in bzlib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ----------------------------------------- ## +## Report this to xar-devel@googlegroups.com ## +## ----------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + have_libbz2="0" +fi + +done + + +echo "$as_me:$LINENO: checking for BZ2_bzCompress in -lbz2" >&5 +echo $ECHO_N "checking for BZ2_bzCompress in -lbz2... $ECHO_C" >&6 +if test "${ac_cv_lib_bz2_BZ2_bzCompress+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char BZ2_bzCompress (); +int +main () +{ +BZ2_bzCompress (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bz2_BZ2_bzCompress=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bz2_BZ2_bzCompress=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_BZ2_bzCompress" >&5 +echo "${ECHO_T}$ac_cv_lib_bz2_BZ2_bzCompress" >&6 +if test $ac_cv_lib_bz2_BZ2_bzCompress = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBBZ2 1 +_ACEOF + + LIBS="-lbz2 $LIBS" + +else + have_libbz2="0" +fi + +if test "x${have_libbz2}" = "x1" ; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBBZ2 1 +_ACEOF + +fi + + + ac_config_headers="$ac_config_headers $cfghdrs" + + + + ac_config_files="$ac_config_files $cfgoutputs" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by Xar $as_me 1.5.2, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +Xar config.status 1.5.2 +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "$cfgoutputs" ) CONFIG_FILES="$CONFIG_FILES $cfgoutputs" ;; + "$cfghdrs" ) CONFIG_HEADERS="$CONFIG_HEADERS $cfghdrs" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@LIB_REV@,$LIB_REV,;t t +s,@XAR_MAJOR_VERSION@,$XAR_MAJOR_VERSION,;t t +s,@XAR_MINOR_VERSION@,$XAR_MINOR_VERSION,;t t +s,@XAR_VERSION@,$XAR_VERSION,;t t +s,@srcroot@,$srcroot,;t t +s,@abs_srcroot@,$abs_srcroot,;t t +s,@objroot@,$objroot,;t t +s,@abs_objroot@,$abs_objroot,;t t +s,@PREFIX@,$PREFIX,;t t +s,@BINDIR@,$BINDIR,;t t +s,@DATADIR@,$DATADIR,;t t +s,@LIBDIR@,$LIBDIR,;t t +s,@INCLUDEDIR@,$INCLUDEDIR,;t t +s,@MANDIR@,$MANDIR,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@LD@,$LD,;t t +s,@AR@,$AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@shared@,$shared,;t t +s,@static@,$static,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@abi@,$abi,;t t +s,@RPATH@,$RPATH,;t t +s,@enable_autogen@,$enable_autogen,;t t +s,@EGREP@,$EGREP,;t t +s,@XML2_CONFIG@,$XML2_CONFIG,;t t +s,@cfghdrs@,$cfghdrs,;t t +s,@cfgoutputs@,$cfgoutputs,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/setup/xar-1.5.2/configure.ac b/setup/xar-1.5.2/configure.ac new file mode 100644 index 0000000..5c905fa --- /dev/null +++ b/setup/xar-1.5.2/configure.ac @@ -0,0 +1,361 @@ +AC_PREREQ(2.59) +AC_INIT([Xar], [1.5.2], [xar-devel@googlegroups.com], [xar]) +AC_CONFIG_SRCDIR([LICENSE]) + +dnl Revision number for libxar. +LIB_REV=1 +AC_SUBST([LIB_REV]) + +dnl xar version variables. +XAR_MAJOR_VERSION="1" +XAR_MINOR_VERSION="5.2" +XAR_VERSION="${XAR_MAJOR_VERSION}.${XAR_MINOR_VERSION}" +AC_SUBST([XAR_MAJOR_VERSION]) +AC_SUBST([XAR_MINOR_VERSION]) +AC_SUBST([XAR_VERSION]) + +dnl +dnl Various paths. +dnl +srcroot=$srcdir +if test "x${srcroot}" = "x." ; then + srcroot="" +else + srcroot="${srcroot}/" +fi +AC_SUBST([srcroot]) +abs_srcroot="`cd "$srcdir"; pwd`/" +AC_SUBST([abs_srcroot]) + +objroot="" +AC_SUBST([objroot]) +abs_objroot="`pwd`/" +AC_SUBST([abs_objroot]) + +dnl Set install paths. +if test "x$prefix" = "xNONE" ; then + prefix="/usr/local" +fi +if test "x$exec_prefix" = "xNONE" ; then + exec_prefix=$prefix +fi +PREFIX=$prefix +AC_SUBST([PREFIX]) +BINDIR=`eval echo $bindir` +BINDIR=`eval echo $BINDIR` +AC_SUBST([BINDIR]) +DATADIR=`eval echo $datadir` +DATADIR=`eval echo $DATADIR` +AC_SUBST([DATADIR]) +LIBDIR=`eval echo $libdir` +LIBDIR=`eval echo $LIBDIR` +AC_SUBST([LIBDIR]) +INCLUDEDIR=`eval echo $includedir` +INCLUDEDIR=`eval echo $INCLUDEDIR` +AC_SUBST([INCLUDEDIR]) +MANDIR=`eval echo $mandir` +MANDIR=`eval echo $MANDIR` +AC_SUBST([MANDIR]) + +cfgoutputs="cfgoutputs.stamp" +cfgoutputs="${cfgoutputs} Makefile" +cfgoutputs="${cfgoutputs} include/xar.h" +cfgoutputs="${cfgoutputs} lib/Makefile.inc" +cfgoutputs="${cfgoutputs} lib/libxar.la.in" +cfgoutputs="${cfgoutputs} src/Makefile.inc" +cfgoutputs="${cfgoutputs} xar.spec" + +cfghdrs="${objroot}cfghdrs.stamp" +cfghdrs="${cfghdrs} ${objroot}include/config.h" + +dnl If CFLAGS isn't defined and using gcc, set CFLAGS to something reasonable. +dnl Otherwise, just prevent autoconf from molesting CFLAGS. +CFLAGS=$CFLAGS +AC_PROG_CC +AC_SYS_LARGEFILE +if test "x$CFLAGS" = "x" ; then + no_CFLAGS="yes" +fi +if test "x$no_CFLAGS" = "xyes" -a "x$GCC" = "xyes" ; then + CFLAGS="-Wall -g" +fi +dnl Append EXTRA_CFLAGS to CFLAGS, if defined. +if test "x$EXTRA_CFLAGS" != "x" ; then + CFLAGS="$CFLAGS $EXTRA_CFLAGS" +fi +AC_PROG_CPP + +AC_PROG_INSTALL +AC_PATH_PROG([LD], [ld], , [$PATH]) +AC_PATH_PROG([AR], [ar], , [$PATH]) +AC_PATH_PROG([RANLIB], [ranlib], , [$PATH]) +AC_PATH_PROG([AUTOCONF], [autoconf], , [$PATH]) + +dnl Some libtool envy +#AC_ENABLE_SHARED +AC_MSG_CHECKING([whether to build shared libraries]) +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared], + [build shared libraries @<:@default=yes@:>@])], + [shared=$enableval],[shared=yes]) +AC_MSG_RESULT($shared) +AC_SUBST([shared]) +#AC_ENABLE_STATIC +AC_MSG_CHECKING([whether to build static libraries]) +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static], + [build static libraries @<:@default=yes@:>@])], + [static=$enableval],[static=yes]) +AC_MSG_RESULT($static) +AC_SUBST([static]) +# Make sure either enable_shared or enable_static is yes. +test "$shared" = "yes" || test "$static" = "yes" + +dnl Platform-specific settings. abi and RPATH can probably be determined +dnl programmatically, but doing so is error-prone, which makes it generally +dnl not worth the trouble. +dnl +dnl Define cpp macros in CPPFLAGS, rather than doing AC_DEFINE(macro), since the +dnl definitions need to be seen before and headers are included, which is a pain +dnl to make happen otherwise. +AC_CANONICAL_HOST +case "${host}" in + *-*-darwin*) + abi="macho" + RPATH="" + ;; + *-*-freebsd*) + CFLAGS="$CFLAGS" + abi="elf" + RPATH="-Wl,-rpath," + ;; + *-*-linux*) + CFLAGS="$CFLAGS" + abi="elf" + dnl Linux needs this for things like asprintf() and poll() flags. + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + RPATH="-Wl,-rpath," + ;; + *-*-netbsd*) + AC_MSG_CHECKING([ABI]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[[#ifdef __ELF__ +/* ELF */ +#else +#error aout +#endif +]])], + [CFLAGS="$CFLAGS"; abi="elf"], + [abi="aout"]) + AC_MSG_RESULT([$abi]) + RPATH="-Wl,-rpath," + ;; + *-*-solaris2*) + CFLAGS="$CFLAGS" + abi="elf" + RPATH="-Wl,-R," + dnl XXX Remove the following if it ends up not being useful. + dnl Solaris needs this for sigwait(). + dnl CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" + dnl LIBS="$LIBS -lposix4 -lsocket -lnsl" + ;; + *) + AC_MSG_RESULT([Unsupported operating system: ${host}]) + abi="elf" + RPATH="-Wl,-rpath," + ;; +esac +AC_SUBST([abi]) +AC_SUBST([RPATH]) + +dnl Disable rules that do automatic regeneration of configure output by default. +AC_ARG_ENABLE([autogen], + [ --enable-autogen Automatically regenerate configure output], +[if test "x$enable_autogen" = "xno" ; then + enable_autogen="0" +else + enable_autogen="1" +fi +], +[enable_autogen="0"] +) +AC_SUBST([enable_autogen]) + +AC_TRY_COMPILE([#include +#include ], [acl_t a], [AC_DEFINE([HAVE_SYS_ACL_H],[1], [define if you have sys/acl.h and it has a working acl_t type])]) +AC_CHECK_HEADERS(ext2fs/ext2_fs.h sys/statfs.h sys/xattr.h sys/param.h sys/extattr.h libutil.h) +AC_CHECK_FUNCS(lgetxattr) +AC_CHECK_FUNCS(lsetxattr) +AC_CHECK_FUNCS(getxattr) +AC_CHECK_FUNCS(setxattr) +AC_CHECK_FUNCS(getattrlist) +AC_CHECK_FUNCS(setattrlist) +AC_CHECK_FUNCS(lchmod) +AC_CHECK_FUNCS(lchown) +AC_CHECK_FUNCS(chflags) +AC_CHECK_FUNCS(statvfs) +AC_CHECK_FUNCS(statfs) +AC_CHECK_FUNCS(strmode) + +AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[#include +#include +#include ]) +AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,,[#include ]) +AC_CHECK_MEMBERS([struct stat.st_flags]) + +AC_CHECK_SIZEOF(uid_t) +if test $ac_cv_sizeof_uid_t = "4"; then +AC_DEFINE(UID_STRING, RId32) +AC_DEFINE(UID_CAST, (uint32_t)) +elif test $ac_cv_sizeof_uid_t = "8"; then +AC_DEFINE(UID_STRING, PRId64) +AC_DEFINE(UID_CAST, (uint64_t)) +else +AC_ERROR(can not detect the size of your system's uid_t type) +fi + +AC_CHECK_SIZEOF(gid_t) +if test $ac_cv_sizeof_gid_t = "4"; then +AC_DEFINE(GID_STRING, PRId32) +AC_DEFINE(GID_CAST, (uint32_t)) +elif test $ac_cv_sizeof_gid_t = "8"; then +AC_DEFINE(GID_STRING, PRId64) +AC_DEFINE(GID_CAST, (uint64_t)) +else +AC_ERROR(can not detect the size of your system's gid_t type) +fi + +AC_CHECK_SIZEOF(ino_t) +if test $ac_cv_sizeof_ino_t = "4"; then +AC_DEFINE(INO_STRING, PRId32) +AC_DEFINE(INO_HEXSTRING, PRIx32) +AC_DEFINE(INO_CAST, (uint32_t)) +elif test $ac_cv_sizeof_ino_t = "8"; then +AC_DEFINE(INO_STRING, PRId64) +AC_DEFINE(INO_HEXSTRING, PRIx64) +AC_DEFINE(INO_CAST, (uint64_t)) +else +AC_ERROR(can not detect the size of your system's ino_t type) +fi + +AC_CHECK_SIZEOF(dev_t) +if test $ac_cv_sizeof_dev_t = "4"; then +AC_DEFINE(DEV_STRING, PRId32) +AC_DEFINE(DEV_HEXSTRING, PRIx32) +AC_DEFINE(DEV_CAST, (uint32_t)) +elif test $ac_cv_sizeof_dev_t = "8"; then +AC_DEFINE(DEV_STRING, PRId64) +AC_DEFINE(DEV_HEXSTRING, PRIx64) +AC_DEFINE(DEV_CAST, (uint64_t)) +else +AC_ERROR(can not detect the size of your system's dev_t type) +fi + +AC_CHECK_LIB(acl, acl_get_file) + +dnl Check for paths +AC_PREFIX_DEFAULT(/usr/local) + +AC_CHECK_FUNC([asprintf], AC_DEFINE([HAVE_ASPRINTF])) + +dnl +dnl Configure libxml2. +dnl +LIBXML2_VERSION_MIN=2.6.11 + +have_libxml2="1" + +AC_ARG_WITH([xml2-config], [ --with-xml2-config libxml2 config program], +if test "x${with_xml2_config}" = "xno" ; then + XML2_CONFIG= +else + XML2_CONFIG="${with_xml2_config}" +fi +, + XML2_CONFIG= +) +if test "x${XML2_CONFIG}" != "x" ; then + if test ! -x "${XML2_CONFIG}" ; then + AC_MSG_ERROR([Unusable or missing xml2-config: ${XML2_CONFIG}]) + fi +else + AC_PATH_PROG([XML2_CONFIG], [xml2-config], , [${PATH}]) + if test "x${XML2_CONFIG}" = "x" ; then + AC_MSG_ERROR([Cannot configure without xml2-config]) + fi +fi + +dnl Make sure the version of libxml2 found is sufficient. +AC_MSG_CHECKING([for libxml >= ${LIBXML2_VERSION_MIN}]) +LIBXML2_FOUND=`2>&1 ${XML2_CONFIG} --version` +LIBXML2_MAJOR=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $1}'` +LIBXML2_MINOR=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $2}' | tr a-z " " |awk '{print $1}'` +LIBXML2_BRANCH=`echo ${LIBXML2_FOUND} | tr . " " | awk '{print $3}' | tr a-z " " |awk '{print $1}'` +if test "x${LIBXML2_BRANCH}" = "x" ; then + LIBXML2_BRANCH=0 +fi +LIBXML2_MAJOR_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $1}'` +LIBXML2_MINOR_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $2}'` +LIBXML2_BRANCH_MIN=`echo ${LIBXML2_VERSION_MIN} | tr . " " | awk '{print $3}'` +if test ${LIBXML2_MAJOR} -gt ${LIBXML2_MAJOR_MIN} \ + -o ${LIBXML2_MAJOR} -eq ${LIBXML2_MAJOR_MIN} \ + -a ${LIBXML2_MINOR} -gt ${LIBXML2_MINOR_MIN} \ + -o ${LIBXML2_MAJOR} -eq ${LIBXML2_MAJOR_MIN} \ + -a ${LIBXML2_MINOR} -eq ${LIBXML2_MINOR_MIN} \ + -a ${LIBXML2_BRANCH} -ge $LIBXML2_BRANCH_MIN ; then + AC_MSG_RESULT([${LIBXML2_MAJOR}.${LIBXML2_MINOR}.${LIBXML2_BRANCH}]) + have_libxml2="1" + CPPFLAGS="${CPPFLAGS} `${XML2_CONFIG} --cflags`" + LIBS="${LIBS} `${XML2_CONFIG} --libs`" +else + AC_MSG_RESULT([no]) + have_libxml2="0" +fi +if test "x${have_libxml2}" = "x1" ; then + dnl Final sanity check, to make sure that xmlwriter is present. + AC_CHECK_HEADER([libxml/xmlwriter.h], , [have_libxml2="0"]) +fi +if test "x${have_libxml2}" = "x0" ; then + AC_MSG_ERROR([Cannot build without libxml2]) +fi + +dnl +dnl Configure libcrypto (part of OpenSSL). +dnl +have_libcrypto="1" +AC_CHECK_HEADERS([openssl/evp.h], , [have_libcrypto="0"]) +AC_CHECK_LIB([crypto], [OpenSSL_add_all_ciphers], , [have_libcrypto="0"]) +if test "x${have_libcrypto}" = "x0" ; then + AC_MSG_ERROR([Cannot build without libcrypto (OpenSSL)]) +fi + +dnl +dnl Configure libz. +dnl +have_libz="1" +AC_CHECK_HEADERS([zlib.h], , [have_libz="0"]) +AC_CHECK_LIB([z], [deflate], , [have_libz="0"]) +if test "x${have_libz}" = "x0" ; then + AC_MSG_ERROR([Cannot build without libz]) +fi + +dnl +dnl Configure libbz2. +dnl +have_libbz2="1" +AC_CHECK_HEADERS([bzlib.h], , [have_libbz2="0"]) +AC_CHECK_LIB([bz2], [BZ2_bzCompress], , [have_libbz2="0"]) +if test "x${have_libbz2}" = "x1" ; then + AC_DEFINE([HAVE_LIBBZ2]) +fi + +dnl +dnl Process .in files. +dnl +AC_SUBST([cfghdrs]) +AC_CONFIG_HEADER([$cfghdrs]) + +AC_SUBST([cfgoutputs]) +AC_CONFIG_FILES([$cfgoutputs]) + +AC_OUTPUT diff --git a/setup/xar-1.5.2/include/config.h b/setup/xar-1.5.2/include/config.h new file mode 100644 index 0000000..6e36331 --- /dev/null +++ b/setup/xar-1.5.2/include/config.h @@ -0,0 +1,34 @@ +/* include/config.h. Generated by configure. */ +#define HAVE_SYS_STATFS_H 1 +#define HAVE_SYS_XATTR_H 1 +/* #undef HAVE_SYS_EXTATTR_H */ +#define HAVE_SYS_PARAM_H 1 +#define HAVE_LGETXATTR 1 +#define HAVE_LSETXATTR 1 +#define HAVE_GETXATTR 1 +#define HAVE_SETXATTR 1 +/* #undef HAVE_GETATTRLIST */ +/* #undef HAVE_SETATTRLIST */ +/* #undef HAVE_CHFLAGS */ +#define HAVE_STATVFS 1 +#define HAVE_STATFS 1 +/* #undef HAVE_EXT2FS_EXT2_FS_H */ +/* #undef HAVE_STRUCT_STAT_ST_FLAGS */ +/* #undef HAVE_STRUCT_STATVFS_F_FSTYPENAME */ +/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ +/* #undef HAVE_SYS_ACL_H */ +/* #undef HAVE_LIBUTIL_H */ +#define HAVE_ASPRINTF 1 +/* #undef HAVE_LIBBZ2 */ +#define HAVE_LCHOWN 1 +/* #undef HAVE_LCHMOD */ +#define UID_STRING RId32 +#define UID_CAST (uint32_t) +#define GID_STRING PRId32 +#define GID_CAST (uint32_t) +#define INO_STRING PRId64 +#define INO_HEXSTRING PRIx64 +#define INO_CAST (uint64_t) +#define DEV_STRING PRId64 +#define DEV_HEXSTRING PRIx64 +#define DEV_CAST (uint64_t) diff --git a/setup/xar-1.5.2/include/config.h.in b/setup/xar-1.5.2/include/config.h.in new file mode 100644 index 0000000..8d8212f --- /dev/null +++ b/setup/xar-1.5.2/include/config.h.in @@ -0,0 +1,33 @@ +#undef HAVE_SYS_STATFS_H +#undef HAVE_SYS_XATTR_H +#undef HAVE_SYS_EXTATTR_H +#undef HAVE_SYS_PARAM_H +#undef HAVE_LGETXATTR +#undef HAVE_LSETXATTR +#undef HAVE_GETXATTR +#undef HAVE_SETXATTR +#undef HAVE_GETATTRLIST +#undef HAVE_SETATTRLIST +#undef HAVE_CHFLAGS +#undef HAVE_STATVFS +#undef HAVE_STATFS +#undef HAVE_EXT2FS_EXT2_FS_H +#undef HAVE_STRUCT_STAT_ST_FLAGS +#undef HAVE_STRUCT_STATVFS_F_FSTYPENAME +#undef HAVE_STRUCT_STATFS_F_FSTYPENAME +#undef HAVE_SYS_ACL_H +#undef HAVE_LIBUTIL_H +#undef HAVE_ASPRINTF +#undef HAVE_LIBBZ2 +#undef HAVE_LCHOWN +#undef HAVE_LCHMOD +#undef UID_STRING +#undef UID_CAST +#undef GID_STRING +#undef GID_CAST +#undef INO_STRING +#undef INO_HEXSTRING +#undef INO_CAST +#undef DEV_STRING +#undef DEV_HEXSTRING +#undef DEV_CAST diff --git a/setup/xar-1.5.2/include/xar.h b/setup/xar-1.5.2/include/xar.h new file mode 100644 index 0000000..dccada5 --- /dev/null +++ b/setup/xar-1.5.2/include/xar.h @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + +#ifndef _XAR_H_ +#define _XAR_H_ + +#define XAR_VERSION "1.5.2" + +#include +#include +#include + +#pragma pack(4) + +struct xar_header { + uint32_t magic; + uint16_t size; + uint16_t version; + uint64_t toc_length_compressed; + uint64_t toc_length_uncompressed; + uint32_t cksum_alg; +}; +#pragma pack() +typedef struct xar_header xar_header_t; + +#define XAR_HEADER_MAGIC 0x78617221 +#define XAR_EA_FORK "ea" + +#define XAR_CKSUM_NONE 0 +#define XAR_CKSUM_SHA1 1 +#define XAR_CKSUM_MD5 2 + +typedef void *xar_errctx_t; +typedef const struct __xar_file_t *xar_file_t; +typedef const struct __xar_iter_t *xar_iter_t; +typedef const struct __xar_t *xar_t; +typedef const struct __xar_subdoc_t *xar_subdoc_t; +typedef const struct __xar_signature_t *xar_signature_t; + +typedef int32_t (*err_handler)(int32_t severit, int32_t instance, xar_errctx_t ctx, void *usrctx); +/* the signed_data must be allocated durring the callback and will be released by the xar lib after the callback */ +typedef int32_t (*xar_signer_callback)(xar_signature_t sig, void *context, uint8_t *data, uint32_t length, uint8_t **signed_data, uint32_t *signed_len); + +#define READ 0 +#define WRITE 1 + +/* Valid xar options & values */ +#define XAR_OPT_OWNERSHIP "ownership" /* setting owner/group behavior */ +#define XAR_OPT_VAL_SYMBOLIC "symbolic" /* set owner/group based on names */ +#define XAR_OPT_VAL_NUMERIC "numeric" /* set owner/group based on uid/gid */ + +#define XAR_OPT_TOCCKSUM "toc-cksum" /* set the toc checksum algorithm */ +#define XAR_OPT_FILECKSUM "file-chksum" /* set the file checksum algorithm */ +#define XAR_OPT_VAL_NONE "none" +#define XAR_OPT_VAL_SHA1 "sha1" +#define XAR_OPT_VAL_MD5 "md5" + +#define XAR_OPT_COMPRESSION "compression" /* set the file compression type */ +#define XAR_OPT_VAL_GZIP "gzip" +#define XAR_OPT_VAL_BZIP "bzip2" + +#define XAR_OPT_RSIZE "rsize" /* Read io buffer size */ + +#define XAR_OPT_COALESCE "coalesce" /* Coalesce identical heap blocks */ +#define XAR_OPT_LINKSAME "linksame" /* Hardlink identical files */ + +/* xar signing algorithms */ +#define XAR_SIG_SHA1RSA 1 + + +/* xar error handler macros */ +#define XAR_SEVERITY_DEBUG 1 +#define XAR_SEVERITY_INFO 2 +#define XAR_SEVERITY_NORMAL 3 +#define XAR_SEVERITY_WARNING 4 +#define XAR_SEVERITY_NONFATAL 5 +#define XAR_SEVERITY_FATAL 6 + +#define XAR_ERR_ARCHIVE_CREATION 1 +#define XAR_ERR_ARCHIVE_EXTRACTION 2 + +xar_t xar_open(const char *file, int32_t flags); +int xar_close(xar_t x); +xar_file_t xar_add(xar_t x, const char *path); + +xar_file_t xar_add_frombuffer(xar_t x, xar_file_t parent, const char *name, char *buffer, size_t length); +xar_file_t xar_add_folder(xar_t x, xar_file_t f, const char *name, struct stat *info); +xar_file_t xar_add_frompath(xar_t x, xar_file_t parent, const char *name, const char *realpath); + +xar_file_t xar_add_from_archive(xar_t x, xar_file_t parent, const char *name, xar_t sourcearchive, xar_file_t sourcefile); + +int32_t xar_extract(xar_t x, xar_file_t f); +int32_t xar_extract_tofile(xar_t x, xar_file_t f, const char *path); +int32_t xar_extract_tobuffer(xar_t x, xar_file_t f, char **buffer); +int32_t xar_extract_tobuffersz(xar_t x, xar_file_t f, char **buffer, size_t *size); + +int32_t xar_verify(xar_t x, xar_file_t f); + + +const char *xar_opt_get(xar_t x, const char *option); +int32_t xar_opt_set(xar_t x, const char *option, const char *value); + +int32_t xar_prop_set(xar_file_t f, const char *key, const char *value); +int32_t xar_prop_create(xar_file_t f, const char *key, const char *value); +int32_t xar_prop_get(xar_file_t f, const char *key, const char **value); + +xar_iter_t xar_iter_new(); +void xar_iter_free(xar_iter_t i); + +const char *xar_prop_first(xar_file_t f, xar_iter_t i); +const char *xar_prop_next(xar_iter_t i); + +void xar_prop_unset(xar_file_t f, const char *key); +xar_file_t xar_file_first(xar_t x, xar_iter_t i); +xar_file_t xar_file_next(xar_iter_t i); + +const char *xar_attr_get(xar_file_t f, const char *prop, const char *key); +int32_t xar_attr_set(xar_file_t f, const char *prop, const char *key, const char *value); +const char *xar_attr_first(xar_file_t f, const char *prop, xar_iter_t i); +const char *xar_attr_next(xar_iter_t i); + +xar_subdoc_t xar_subdoc_new(xar_t x, const char *name); +int32_t xar_subdoc_prop_set(xar_subdoc_t s, const char *key, const char *value); +int32_t xar_subdoc_prop_get(xar_subdoc_t s, const char *key, const char **value); +int32_t xar_subdoc_attr_set(xar_subdoc_t s, const char *prop, const char *key, const char *value); +const char *xar_subdoc_attr_get(xar_subdoc_t s, const char *prop, const char *key); +xar_subdoc_t xar_subdoc_first(xar_t x); +xar_subdoc_t xar_subdoc_next(xar_subdoc_t s); +const char *xar_subdoc_name(xar_subdoc_t s); +int32_t xar_subdoc_copyout(xar_subdoc_t s, unsigned char **, unsigned int *); +int32_t xar_subdoc_copyin(xar_subdoc_t s, const unsigned char *, unsigned int); +void xar_subdoc_remove(xar_subdoc_t s); + +/* signature api for adding various signature types */ +xar_signature_t xar_signature_new(xar_t x,const char *type, int32_t length, xar_signer_callback callback, void *callback_context); + +const char *xar_signature_type(xar_signature_t s); + +xar_signature_t xar_signature_first(xar_t x); +xar_signature_t xar_signature_next(xar_signature_t s); + +int32_t xar_signature_add_x509certificate(xar_signature_t sig, const uint8_t *cert_data, uint32_t cert_len ); + +int32_t xar_signature_get_x509certificate_count(xar_signature_t sig); +int32_t xar_signature_get_x509certificate_data(xar_signature_t sig, int32_t index, const uint8_t **cert_data, uint32_t *cert_len); + +uint8_t xar_signature_copy_signed_data(xar_signature_t sig, uint8_t **data, uint32_t *length, uint8_t **signed_data, uint32_t *signed_length); + + + +/* These are for xar modules and should never be needed from a calling app */ +void xar_register_errhandler(xar_t x, err_handler callback, void *usrctx); +xar_file_t xar_err_get_file(xar_errctx_t ctx); +const char *xar_err_get_string(xar_errctx_t ctx); +int xar_err_get_errno(xar_errctx_t ctx); +void xar_err_set_file(xar_t x, xar_file_t f); +void xar_err_set_string(xar_t x, const char *str); +void xar_err_set_errno(xar_t x, int e); +void xar_err_new(xar_t x); +int32_t xar_err_callback(xar_t x, int32_t sev, int32_t err); + +void xar_serialize(xar_t x, const char *file); +char *xar_get_path(xar_file_t f); +off_t xar_get_heap_offset(xar_t x); +uint64_t xar_ntoh64(uint64_t num); + +#endif /* _XAR_H_ */ diff --git a/setup/xar-1.5.2/include/xar.h.in b/setup/xar-1.5.2/include/xar.h.in new file mode 100644 index 0000000..fc9147a --- /dev/null +++ b/setup/xar-1.5.2/include/xar.h.in @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + +#ifndef _XAR_H_ +#define _XAR_H_ + +#define XAR_VERSION "@XAR_VERSION@" + +#include +#include +#include + +#pragma pack(4) + +struct xar_header { + uint32_t magic; + uint16_t size; + uint16_t version; + uint64_t toc_length_compressed; + uint64_t toc_length_uncompressed; + uint32_t cksum_alg; +}; +#pragma pack() +typedef struct xar_header xar_header_t; + +#define XAR_HEADER_MAGIC 0x78617221 +#define XAR_EA_FORK "ea" + +#define XAR_CKSUM_NONE 0 +#define XAR_CKSUM_SHA1 1 +#define XAR_CKSUM_MD5 2 + +typedef void *xar_errctx_t; +typedef const struct __xar_file_t *xar_file_t; +typedef const struct __xar_iter_t *xar_iter_t; +typedef const struct __xar_t *xar_t; +typedef const struct __xar_subdoc_t *xar_subdoc_t; +typedef const struct __xar_signature_t *xar_signature_t; + +typedef int32_t (*err_handler)(int32_t severit, int32_t instance, xar_errctx_t ctx, void *usrctx); +/* the signed_data must be allocated durring the callback and will be released by the xar lib after the callback */ +typedef int32_t (*xar_signer_callback)(xar_signature_t sig, void *context, uint8_t *data, uint32_t length, uint8_t **signed_data, uint32_t *signed_len); + +#define READ 0 +#define WRITE 1 + +/* Valid xar options & values */ +#define XAR_OPT_OWNERSHIP "ownership" /* setting owner/group behavior */ +#define XAR_OPT_VAL_SYMBOLIC "symbolic" /* set owner/group based on names */ +#define XAR_OPT_VAL_NUMERIC "numeric" /* set owner/group based on uid/gid */ + +#define XAR_OPT_TOCCKSUM "toc-cksum" /* set the toc checksum algorithm */ +#define XAR_OPT_FILECKSUM "file-chksum" /* set the file checksum algorithm */ +#define XAR_OPT_VAL_NONE "none" +#define XAR_OPT_VAL_SHA1 "sha1" +#define XAR_OPT_VAL_MD5 "md5" + +#define XAR_OPT_COMPRESSION "compression" /* set the file compression type */ +#define XAR_OPT_VAL_GZIP "gzip" +#define XAR_OPT_VAL_BZIP "bzip2" + +#define XAR_OPT_RSIZE "rsize" /* Read io buffer size */ + +#define XAR_OPT_COALESCE "coalesce" /* Coalesce identical heap blocks */ +#define XAR_OPT_LINKSAME "linksame" /* Hardlink identical files */ + +/* xar signing algorithms */ +#define XAR_SIG_SHA1RSA 1 + + +/* xar error handler macros */ +#define XAR_SEVERITY_DEBUG 1 +#define XAR_SEVERITY_INFO 2 +#define XAR_SEVERITY_NORMAL 3 +#define XAR_SEVERITY_WARNING 4 +#define XAR_SEVERITY_NONFATAL 5 +#define XAR_SEVERITY_FATAL 6 + +#define XAR_ERR_ARCHIVE_CREATION 1 +#define XAR_ERR_ARCHIVE_EXTRACTION 2 + +xar_t xar_open(const char *file, int32_t flags); +int xar_close(xar_t x); +xar_file_t xar_add(xar_t x, const char *path); + +xar_file_t xar_add_frombuffer(xar_t x, xar_file_t parent, const char *name, char *buffer, size_t length); +xar_file_t xar_add_folder(xar_t x, xar_file_t f, const char *name, struct stat *info); +xar_file_t xar_add_frompath(xar_t x, xar_file_t parent, const char *name, const char *realpath); + +xar_file_t xar_add_from_archive(xar_t x, xar_file_t parent, const char *name, xar_t sourcearchive, xar_file_t sourcefile); + +int32_t xar_extract(xar_t x, xar_file_t f); +int32_t xar_extract_tofile(xar_t x, xar_file_t f, const char *path); +int32_t xar_extract_tobuffer(xar_t x, xar_file_t f, char **buffer); +int32_t xar_extract_tobuffersz(xar_t x, xar_file_t f, char **buffer, size_t *size); + +int32_t xar_verify(xar_t x, xar_file_t f); + + +const char *xar_opt_get(xar_t x, const char *option); +int32_t xar_opt_set(xar_t x, const char *option, const char *value); + +int32_t xar_prop_set(xar_file_t f, const char *key, const char *value); +int32_t xar_prop_create(xar_file_t f, const char *key, const char *value); +int32_t xar_prop_get(xar_file_t f, const char *key, const char **value); + +xar_iter_t xar_iter_new(); +void xar_iter_free(xar_iter_t i); + +const char *xar_prop_first(xar_file_t f, xar_iter_t i); +const char *xar_prop_next(xar_iter_t i); + +void xar_prop_unset(xar_file_t f, const char *key); +xar_file_t xar_file_first(xar_t x, xar_iter_t i); +xar_file_t xar_file_next(xar_iter_t i); + +const char *xar_attr_get(xar_file_t f, const char *prop, const char *key); +int32_t xar_attr_set(xar_file_t f, const char *prop, const char *key, const char *value); +const char *xar_attr_first(xar_file_t f, const char *prop, xar_iter_t i); +const char *xar_attr_next(xar_iter_t i); + +xar_subdoc_t xar_subdoc_new(xar_t x, const char *name); +int32_t xar_subdoc_prop_set(xar_subdoc_t s, const char *key, const char *value); +int32_t xar_subdoc_prop_get(xar_subdoc_t s, const char *key, const char **value); +int32_t xar_subdoc_attr_set(xar_subdoc_t s, const char *prop, const char *key, const char *value); +const char *xar_subdoc_attr_get(xar_subdoc_t s, const char *prop, const char *key); +xar_subdoc_t xar_subdoc_first(xar_t x); +xar_subdoc_t xar_subdoc_next(xar_subdoc_t s); +const char *xar_subdoc_name(xar_subdoc_t s); +int32_t xar_subdoc_copyout(xar_subdoc_t s, unsigned char **, unsigned int *); +int32_t xar_subdoc_copyin(xar_subdoc_t s, const unsigned char *, unsigned int); +void xar_subdoc_remove(xar_subdoc_t s); + +/* signature api for adding various signature types */ +xar_signature_t xar_signature_new(xar_t x,const char *type, int32_t length, xar_signer_callback callback, void *callback_context); + +const char *xar_signature_type(xar_signature_t s); + +xar_signature_t xar_signature_first(xar_t x); +xar_signature_t xar_signature_next(xar_signature_t s); + +int32_t xar_signature_add_x509certificate(xar_signature_t sig, const uint8_t *cert_data, uint32_t cert_len ); + +int32_t xar_signature_get_x509certificate_count(xar_signature_t sig); +int32_t xar_signature_get_x509certificate_data(xar_signature_t sig, int32_t index, const uint8_t **cert_data, uint32_t *cert_len); + +uint8_t xar_signature_copy_signed_data(xar_signature_t sig, uint8_t **data, uint32_t *length, uint8_t **signed_data, uint32_t *signed_length); + + + +/* These are for xar modules and should never be needed from a calling app */ +void xar_register_errhandler(xar_t x, err_handler callback, void *usrctx); +xar_file_t xar_err_get_file(xar_errctx_t ctx); +const char *xar_err_get_string(xar_errctx_t ctx); +int xar_err_get_errno(xar_errctx_t ctx); +void xar_err_set_file(xar_t x, xar_file_t f); +void xar_err_set_string(xar_t x, const char *str); +void xar_err_set_errno(xar_t x, int e); +void xar_err_new(xar_t x); +int32_t xar_err_callback(xar_t x, int32_t sev, int32_t err); + +void xar_serialize(xar_t x, const char *file); +char *xar_get_path(xar_file_t f); +off_t xar_get_heap_offset(xar_t x); +uint64_t xar_ntoh64(uint64_t num); + +#endif /* _XAR_H_ */ diff --git a/setup/xar-1.5.2/install-sh b/setup/xar-1.5.2/install-sh new file mode 100755 index 0000000..ebc6691 --- /dev/null +++ b/setup/xar-1.5.2/install-sh @@ -0,0 +1,250 @@ +#! /bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/setup/xar-1.5.2/lib/.libs/libxar.a b/setup/xar-1.5.2/lib/.libs/libxar.a new file mode 120000 index 0000000..b94543f --- /dev/null +++ b/setup/xar-1.5.2/lib/.libs/libxar.a @@ -0,0 +1 @@ +../libxar.a \ No newline at end of file diff --git a/setup/xar-1.5.2/lib/.libs/libxar.so b/setup/xar-1.5.2/lib/.libs/libxar.so new file mode 120000 index 0000000..74ce92c --- /dev/null +++ b/setup/xar-1.5.2/lib/.libs/libxar.so @@ -0,0 +1 @@ +../libxar.so \ No newline at end of file diff --git a/setup/xar-1.5.2/lib/Makefile.inc b/setup/xar-1.5.2/lib/Makefile.inc new file mode 100644 index 0000000..a85044f --- /dev/null +++ b/setup/xar-1.5.2/lib/Makefile.inc @@ -0,0 +1,202 @@ +# +# File lists. +# + +# Internal headers. +LIBXAR_IINCS := asprintf.h + +LIBXAR_IINCS := $(patsubst %, include/%, $(LIBXAR_IINCS)) +LIBXAR_IINCS += include/config.h + +# Headers. +LIBXAR_INCS := + +LIBXAR_INCS := $(patsubst %, include/%, $(LIBXAR_INCS)) +LIBXAR_INCS += include/xar.h + +# Sources. +LIBXAR_SRCS := archive.c arcmod.c b64.c bzxar.c darwinattr.c data.c ea.c err.c +LIBXAR_SRCS += ext2.c fbsdattr.c filetree.c io.c linuxattr.c hash.c signature.c stat.c +LIBXAR_SRCS += subdoc.c util.c zxar.c script.c macho.c + +LIBXAR_SRCS := $(patsubst %, lib/%, $(LIBXAR_SRCS)) + +# Libraries. librxar is created such that it's possible to run xar without +# first installing libxar. + +LIBXAR_LANAME := libxar.la +LIBXAR_ANAME := libxar.a +ifeq (elf, elf) +LIBRXAR_SNAME := librxar.so.1 +LIBRXAR_LNAME := librxar.so +LIBRXAR_L := lib/$(LIBRXAR_LNAME) +LIBXAR_SNAME := libxar.so.1 +LIBXAR_LNAME := libxar.so +LIBXAR_L := lib/$(LIBXAR_LNAME) +endif +ifeq (macho, elf) +LIBRXAR_SNAME := librxar.1.dylib +LIBRXAR_LNAME := librxar.dylib +LIBRXAR_L := lib/$(LIBRXAR_LNAME) +LIBXAR_SNAME := libxar.1.dylib +LIBXAR_LNAME := libxar.dylib +LIBXAR_L := lib/$(LIBXAR_LNAME) +endif +ifeq (aout, elf) +LIBRXAR_SNAME := librxar.so.1.0 +LIBRXAR_LNAME := +LIBRXAR_L := +LIBXAR_SNAME := libxar.so.1.0 +LIBXAR_LNAME := +LIBXAR_L := +endif +LIBXAR_LA := lib/$(LIBXAR_LANAME) +LIBXAR_A := lib/$(LIBXAR_ANAME) +LIBRXAR_S := lib/$(LIBRXAR_SNAME) +LIBXAR_S := lib/$(LIBXAR_SNAME) + +# +# Include generated dependency files. +# +-include $(LIBXAR_SRCS:%.c=%.d) + +LDFLAGS := -Llib $(LDFLAGS) + +# +# User make'ables. +# + +lib_all : lib_shared lib_static $(LIBXAR_LA) +ifeq (yes, yes) +lib_shared : $(LIBRXAR_S) $(LIBXAR_S) +else +lib_shared : +endif +ifeq (yes, yes) +lib_static : $(LIBXAR_A) +else +lib_static : +endif + +lib_install : lib_shared lib_static + /usr/bin/install -c -d $(DESTDIR)$(INCLUDEDIR)/xar + /usr/bin/install -c -m 0644 $(LIBXAR_INCS) $(DESTDIR)$(INCLUDEDIR)/xar + /usr/bin/install -c -d $(DESTDIR)$(LIBDIR) +ifeq (yes, yes) + /usr/bin/install -c -m 0755 $(LIBXAR_S) $(DESTDIR)$(LIBDIR) +ifneq ($(words "" $(LIBXAR_LNAME)), 1) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) + ln -s $(LIBXAR_SNAME) $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) +endif +endif +ifeq (yes, yes) + /usr/bin/install -c -m 0644 $(LIBXAR_A) $(DESTDIR)$(LIBDIR) +endif + /usr/bin/install -c -m 0644 $(LIBXAR_LA) $(DESTDIR)$(LIBDIR) + +lib_uninstall : + rm -rf $(DESTDIR)$(INCLUDEDIR)/xar +ifeq (yes, yes) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_SNAME) +ifneq ($(words "" $(LIBXAR_LNAME)), 1) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) +endif +endif +ifeq (yes, yes) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_ANAME) +endif + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LANAME) + +lib_clean : + rm -f $(LIBRXAR_S) $(LIBRXAR_L) + rm -f $(LIBXAR_S) $(LIBXAR_L) + rm -f $(LIBXAR_A) $(LIBXAR_LA) + rm -f $(LIBXAR_SRCS:%.c=%.o) + rm -f $(LIBXAR_SRCS:%.c=%.d) + rm -f $(LIBXAR_SRCS:%.c=%.static.o) + rm -f $(LIBXAR_SRCS:%.c=%.static.d) + +lib_distclean : + +# +# Various flags. +# + +CPPFLAGS := -Iinclude $(CPPFLAGS) +CPPFLAGS := -Iinclude $(CPPFLAGS) + +# +# Build rules. +# + +# librxar is a version of the xar library that is usable without first +# installing libxar. +$(LIBRXAR_S) : $(LIBXAR_SRCS:%.c=%.o) + @mkdir -p $(@D) +ifeq (elf, elf) + $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ -lz -lcrypto -lxml2 +endif +ifeq (macho, elf) + $(CC) -dynamiclib -compatibility_version 1 -current_version 1 -install_name /home/bneg/Code/Empire/2.0_beta/setup/xar-1.5.2/$(LIBRXAR_S) -o $@ $+ $(LDFLAGS) -lz -lcrypto -lxml2 +endif +ifeq (aout, elf) + $(CC) -shared -o $@ $+ +endif +ifneq ($(words "" $(LIBRXAR_L)), 1) + rm -f $(LIBRXAR_L) + ln -s $(LIBRXAR_SNAME) $(LIBRXAR_L) +endif + +$(LIBXAR_S) : $(LIBXAR_SRCS:%.c=%.o) + @mkdir -p $(@D) +ifeq (elf, elf) + $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ -lz -lcrypto -lxml2 +endif +ifeq (macho, elf) + $(CC) -dynamiclib -compatibility_version 1 -current_version 1 -install_name $(LIBDIR)/$(LIBXAR_SNAME) -o $@ $+ $(LDFLAGS) -lz -lcrypto -lxml2 +endif +ifeq (aout, elf) + $(CC) -shared -o $@ $+ +endif +ifneq ($(words "" $(LIBXAR_L)), 1) + rm -f $(LIBXAR_L) + ln -s $(LIBXAR_SNAME) $(LIBXAR_L) +endif + +ifeq (yes, yes) +LT_LIBXAR_SNAME := $(LIBXAR_SNAME) +LT_LIBXAR_LNAME := $(LIBXAR_LNAME) +else +LT_LIBXAR_SNAME := +LT_LIBXAR_LNAME := +endif +ifeq (yes, yes) +LT_LIBXAR_ANAME := $(LIBXAR_ANAME) +else +LT_LIBXAR_ANAME := +endif + +$(LIBXAR_LA) : $(LIBXAR_LA).in + @mkdir -p lib/.libs +ifeq (yes, yes) + @ln -sf ../$(LIBXAR_LNAME) lib/.libs/$(LIBXAR_LNAME) +endif +ifeq (yes, yes) + @ln -sf ../$(LIBXAR_ANAME) lib/.libs/$(LIBXAR_ANAME) +endif + sed -e s/@LIBXAR_SNAME@/$(LT_LIBXAR_SNAME)/ -e s/@LIBXAR_LNAME@/$(LT_LIBXAR_LNAME)/ -e s/@LIBXAR_ANAME@/$(LT_LIBXAR_ANAME)/ < $< > $@ + +$(LIBXAR_A) : $(LIBXAR_SRCS:%.c=%.static.o) + @mkdir -p $(@D) + $(AR) cvr $@ $+ + $(RANLIB) $@ + +lib/%.o : lib/%.c + @mkdir -p $(@D) + $(CC) $(S_CFLAGS) $(CPPFLAGS) -c $< -o $@ + @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" + +lib/%.static.o : lib/%.c + @mkdir -p $(@D) + $(CC) $(A_CFLAGS) $(CPPFLAGS) -c $< -o $@ + @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" diff --git a/setup/xar-1.5.2/lib/Makefile.inc.in b/setup/xar-1.5.2/lib/Makefile.inc.in new file mode 100644 index 0000000..c9eac4a --- /dev/null +++ b/setup/xar-1.5.2/lib/Makefile.inc.in @@ -0,0 +1,202 @@ +# +# File lists. +# + +# Internal headers. +LIBXAR_IINCS := asprintf.h + +LIBXAR_IINCS := $(patsubst %, @srcroot@include/%, $(LIBXAR_IINCS)) +LIBXAR_IINCS += @objroot@include/config.h + +# Headers. +LIBXAR_INCS := + +LIBXAR_INCS := $(patsubst %, @srcroot@include/%, $(LIBXAR_INCS)) +LIBXAR_INCS += @objroot@include/xar.h + +# Sources. +LIBXAR_SRCS := archive.c arcmod.c b64.c bzxar.c darwinattr.c data.c ea.c err.c +LIBXAR_SRCS += ext2.c fbsdattr.c filetree.c io.c linuxattr.c hash.c signature.c stat.c +LIBXAR_SRCS += subdoc.c util.c zxar.c script.c macho.c + +LIBXAR_SRCS := $(patsubst %, @srcroot@lib/%, $(LIBXAR_SRCS)) + +# Libraries. librxar is created such that it's possible to run xar without +# first installing libxar. + +LIBXAR_LANAME := libxar.la +LIBXAR_ANAME := libxar.a +ifeq (elf, @abi@) +LIBRXAR_SNAME := librxar.so.@LIB_REV@ +LIBRXAR_LNAME := librxar.so +LIBRXAR_L := @objroot@lib/$(LIBRXAR_LNAME) +LIBXAR_SNAME := libxar.so.@LIB_REV@ +LIBXAR_LNAME := libxar.so +LIBXAR_L := @objroot@lib/$(LIBXAR_LNAME) +endif +ifeq (macho, @abi@) +LIBRXAR_SNAME := librxar.@LIB_REV@.dylib +LIBRXAR_LNAME := librxar.dylib +LIBRXAR_L := @objroot@lib/$(LIBRXAR_LNAME) +LIBXAR_SNAME := libxar.@LIB_REV@.dylib +LIBXAR_LNAME := libxar.dylib +LIBXAR_L := @objroot@lib/$(LIBXAR_LNAME) +endif +ifeq (aout, @abi@) +LIBRXAR_SNAME := librxar.so.@LIB_REV@.0 +LIBRXAR_LNAME := +LIBRXAR_L := +LIBXAR_SNAME := libxar.so.@LIB_REV@.0 +LIBXAR_LNAME := +LIBXAR_L := +endif +LIBXAR_LA := @objroot@lib/$(LIBXAR_LANAME) +LIBXAR_A := @objroot@lib/$(LIBXAR_ANAME) +LIBRXAR_S := @objroot@lib/$(LIBRXAR_SNAME) +LIBXAR_S := @objroot@lib/$(LIBXAR_SNAME) + +# +# Include generated dependency files. +# +-include $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.d) + +LDFLAGS := -L@objroot@lib $(LDFLAGS) + +# +# User make'ables. +# + +lib_all : lib_shared lib_static $(LIBXAR_LA) +ifeq (yes, @shared@) +lib_shared : $(LIBRXAR_S) $(LIBXAR_S) +else +lib_shared : +endif +ifeq (yes, @static@) +lib_static : $(LIBXAR_A) +else +lib_static : +endif + +lib_install : lib_shared lib_static + @INSTALL@ -d $(DESTDIR)$(INCLUDEDIR)/xar + @INSTALL@ -m 0644 $(LIBXAR_INCS) $(DESTDIR)$(INCLUDEDIR)/xar + @INSTALL@ -d $(DESTDIR)$(LIBDIR) +ifeq (yes, @shared@) + @INSTALL@ -m 0755 $(LIBXAR_S) $(DESTDIR)$(LIBDIR) +ifneq ($(words "" $(LIBXAR_LNAME)), 1) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) + ln -s $(LIBXAR_SNAME) $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) +endif +endif +ifeq (yes, @static@) + @INSTALL@ -m 0644 $(LIBXAR_A) $(DESTDIR)$(LIBDIR) +endif + @INSTALL@ -m 0644 $(LIBXAR_LA) $(DESTDIR)$(LIBDIR) + +lib_uninstall : + rm -rf $(DESTDIR)$(INCLUDEDIR)/xar +ifeq (yes, @shared@) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_SNAME) +ifneq ($(words "" $(LIBXAR_LNAME)), 1) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LNAME) +endif +endif +ifeq (yes, @static@) + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_ANAME) +endif + rm -f $(DESTDIR)$(LIBDIR)/$(LIBXAR_LANAME) + +lib_clean : + rm -f $(LIBRXAR_S) $(LIBRXAR_L) + rm -f $(LIBXAR_S) $(LIBXAR_L) + rm -f $(LIBXAR_A) $(LIBXAR_LA) + rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) + rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.d) + rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.static.o) + rm -f $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.static.d) + +lib_distclean : + +# +# Various flags. +# + +CPPFLAGS := -I@objroot@include $(CPPFLAGS) +CPPFLAGS := -I@srcroot@include $(CPPFLAGS) + +# +# Build rules. +# + +# librxar is a version of the xar library that is usable without first +# installing libxar. +$(LIBRXAR_S) : $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) + @mkdir -p $(@D) +ifeq (elf, @abi@) + $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ @LIBS@ +endif +ifeq (macho, @abi@) + $(CC) -dynamiclib -compatibility_version @LIB_REV@ -current_version @LIB_REV@ -install_name @abs_objroot@$(LIBRXAR_S) -o $@ $+ $(LDFLAGS) @LIBS@ +endif +ifeq (aout, @abi@) + $(CC) -shared -o $@ $+ +endif +ifneq ($(words "" $(LIBRXAR_L)), 1) + rm -f $(LIBRXAR_L) + ln -s $(LIBRXAR_SNAME) $(LIBRXAR_L) +endif + +$(LIBXAR_S) : $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.o) + @mkdir -p $(@D) +ifeq (elf, @abi@) + $(CC) -shared -Wl,-soname,$(LIBXAR_SNAME) -o $@ $+ @LIBS@ +endif +ifeq (macho, @abi@) + $(CC) -dynamiclib -compatibility_version @LIB_REV@ -current_version @LIB_REV@ -install_name $(LIBDIR)/$(LIBXAR_SNAME) -o $@ $+ $(LDFLAGS) @LIBS@ +endif +ifeq (aout, @abi@) + $(CC) -shared -o $@ $+ +endif +ifneq ($(words "" $(LIBXAR_L)), 1) + rm -f $(LIBXAR_L) + ln -s $(LIBXAR_SNAME) $(LIBXAR_L) +endif + +ifeq (yes, @shared@) +LT_LIBXAR_SNAME := $(LIBXAR_SNAME) +LT_LIBXAR_LNAME := $(LIBXAR_LNAME) +else +LT_LIBXAR_SNAME := +LT_LIBXAR_LNAME := +endif +ifeq (yes, @static@) +LT_LIBXAR_ANAME := $(LIBXAR_ANAME) +else +LT_LIBXAR_ANAME := +endif + +$(LIBXAR_LA) : $(LIBXAR_LA).in + @mkdir -p @objroot@lib/.libs +ifeq (yes, @shared@) + @ln -sf ../$(LIBXAR_LNAME) @objroot@lib/.libs/$(LIBXAR_LNAME) +endif +ifeq (yes, @static@) + @ln -sf ../$(LIBXAR_ANAME) @objroot@lib/.libs/$(LIBXAR_ANAME) +endif + sed -e s/@LIBXAR_SNAME@/$(LT_LIBXAR_SNAME)/ -e s/@LIBXAR_LNAME@/$(LT_LIBXAR_LNAME)/ -e s/@LIBXAR_ANAME@/$(LT_LIBXAR_ANAME)/ < $< > $@ + +$(LIBXAR_A) : $(LIBXAR_SRCS:@srcroot@%.c=@objroot@%.static.o) + @mkdir -p $(@D) + $(AR) cvr $@ $+ + $(RANLIB) $@ + +@objroot@lib/%.o : @srcroot@lib/%.c + @mkdir -p $(@D) + $(CC) $(S_CFLAGS) $(CPPFLAGS) -c $< -o $@ + @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" + +@objroot@lib/%.static.o : @srcroot@lib/%.c + @mkdir -p $(@D) + $(CC) $(A_CFLAGS) $(CPPFLAGS) -c $< -o $@ + @$(SHELL) -ec "$(CC) -MM $(CPPFLAGS) $< | sed \"s/\($(subst /,\/,$(notdir $(basename $@)))\)\.o\([ :]*\)/$(subst /,\/,$(strip $(dir $@)))\1.o \2/g\" > $(@:%.o=%.d)" diff --git a/setup/xar-1.5.2/lib/appledouble.h b/setup/xar-1.5.2/lib/appledouble.h new file mode 100644 index 0000000..b1d9437 --- /dev/null +++ b/setup/xar-1.5.2/lib/appledouble.h @@ -0,0 +1,103 @@ +/* Information pulled from: + * "AppleSingle/AppleDouble Formats for Foreign Files Developer's Note" + * (c) Apple Computer 1990 + * File assembled by Rob Braun (bbraun@synack.net) + */ + +#ifndef __APPLEDOUBLE__ +#define __APPLEDOUBLE__ + +#include +#include + +/* Structure of an AppleSingle file: + * ---------------------- + * | AppleSingleHeader | + * |--------------------| + * | ASH.entries # of | + * | AppleSingleEntry | + * | Descriptors | + * | 1 | + * | . | + * | . | + * | n | + * |--------------------| + * | Datablock 1 | + * |--------------------| + * | Datablock 2 | + * |--------------------| + * | Datablock n | + * ---------------------- + */ + +struct AppleSingleHeader { + uint32_t magic; /* Magic Number (0x00051600 for AS) */ + uint32_t version; /* Version #. 0x00020000 */ + char filler[16]; /* All zeros */ + uint16_t entries; /* Number of entries in the file */ +}; + +#define XAR_ASH_SIZE 26 /* sizeof(struct AppleSingleHeader) will be wrong + * due to padding. */ + +#define APPLESINGLE_MAGIC 0x00051600 +#define APPLEDOUBLE_MAGIC 0x00051607 + +#define APPLESINGLE_VERSION 0x00020000 +#define APPLEDOUBLE_VERSION 0x00020000 + +struct AppleSingleEntry { + uint32_t entry_id; /* What the entry is. See defines below */ + uint32_t offset; /* offset of data, offset beginning of file */ + uint32_t length; /* length of data. can be 0 */ +}; + +/* Valid entry_id values */ +/* Entries 1, 3, and 8 are typically created for all files. + * Macintosh Icon entries are rare, since those are typically in the resource + * fork. + */ +#define AS_ID_DATA 1 /* Data fork */ +#define AS_ID_RESOURCE 2 /* Resource fork */ +#define AS_ID_NAME 3 /* Name of the file */ +#define AS_ID_COMMENT 4 /* Standard Macintosh comment */ +#define AS_ID_BWICON 5 /* Standard Macintosh B&W icon */ +#define AS_ID_COLORICON 6 /* Standard Macintosh Color icon */ +/* There is no 7 */ +#define AS_ID_DATES 8 /* File creation date, modification date, etc. */ +#define AS_ID_FINDER 9 /* Finder Information */ +#define AS_ID_MAC 10 /* Macintosh File information, attributes, etc. */ +#define AS_ID_PRODOS 11 /* ProDOS file information */ +#define AS_ID_MSDOS 12 /* MS-DOS file information */ +#define AS_ID_SHORTNAME 13 /* AFP short name */ +#define AS_ID_AFPINFO 14 /* AFP file information */ +#define AS_ID_AFPDIR 15 /* AFP directory id */ +/* 1-0x7FFFFFFF are reserved by Apple */ + +/* File Dates are stored as the # of seconds before or after + * 12am Jan 1, 2000 GMT. The default value is 0x80000000. + */ +struct MacTimes { + uint32_t creation; + uint32_t modification; + uint32_t backup; + uint32_t access; +}; + +/* Finder Information is two 16 byte quantities. + * Newly created files have all 0's in both entries. + */ + +/* Macintosh File Info entry (10) a 32 bit bitmask. */ + +/* Entries can be placed in any order, although Apple recommends: + * Place the data block (1) last. + * Finder Info, File Dates Info, and Macintosh File Info first. + * Allocate resource for entries in 4K blocks. + */ + +/* AppleDouble files are simply AppleSingle files without the data fork. + * The magic number is different as a read optimization. + */ + +#endif /* __APPLEDOUBLE__ */ diff --git a/setup/xar-1.5.2/lib/archive.c b/setup/xar-1.5.2/lib/archive.c new file mode 100644 index 0000000..8a00dac --- /dev/null +++ b/setup/xar-1.5.2/lib/archive.c @@ -0,0 +1,1420 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + +#define _FILE_OFFSET_BITS 64 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* for ntoh{l,s} */ +#include /* for PRIu64 */ +#include +#include +#include +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include "xar.h" +#include "filetree.h" +#include "archive.h" +#include "signature.h" +#include "arcmod.h" +#include "io.h" +#include "util.h" +#include "subdoc.h" +#include "darwinattr.h" + +#ifndef O_EXLOCK +#define O_EXLOCK 0 +#endif +#ifndef O_SHLOCK +#define O_SHLOCK 0 +#endif + +#ifndef LONG_MAX +#define LONG_MAX INT32_MAX +#endif +#ifndef LONG_MIN +#define LONG_MIN INT32_MIN +#endif + +static int32_t xar_unserialize(xar_t x); +void xar_serialize(xar_t x, const char *file); + +/* xar_new + * Returns: newly allocated xar_t structure + * Summary: just does basicallocation and initialization of + * xar_t structure. + */ +static xar_t xar_new() { + xar_t ret; + ret = malloc(sizeof(struct __xar_t)); + if(!ret) return NULL; + memset(XAR(ret), 0, sizeof(struct __xar_t)); + XAR(ret)->readbuf_len = 4096; + XAR(ret)->readbuf = malloc(XAR(ret)->readbuf_len); + if(!XAR(ret)->readbuf) { + free((void *)ret); + return NULL; + } + XAR(ret)->offset = 0; + + XAR(ret)->zs.zalloc = Z_NULL; + XAR(ret)->zs.zfree = Z_NULL; + XAR(ret)->zs.opaque = Z_NULL; + XAR(ret)->ino_hash = xmlHashCreate(0); + XAR(ret)->link_hash = xmlHashCreate(0); + XAR(ret)->csum_hash = xmlHashCreate(0); + XAR(ret)->subdocs = NULL; + + return ret; +} + +/* xar_parse_header + * x: archive to operate on. + * Returns: 0 on success, -1 on failure + * Summary: internal helper function to read in the xar header. + */ +static int32_t xar_parse_header(xar_t x) { + ssize_t r; + int off = 0; + int sz2read = 0; + + /* read just the magic, verify it, read the header length, + * then read in the size of the header according to the + * recorded header length, or the length of the structure + * we expect, whichever is smaller. Then seek forward + * if the recorded header length is greater than the + * expected header length. + */ + r = xar_read_fd(XAR(x)->fd, (char *)&XAR(x)->header.magic+off, sizeof(XAR(x)->header.magic)-off); + if ( r == -1 ) + return r; + + /* Verify the header. If the header doesn't match, exit without + * attempting to read any more. + */ + XAR(x)->header.magic = ntohl(XAR(x)->header.magic); + + if( XAR(x)->header.magic != XAR_HEADER_MAGIC ) { + return -1; + } + + r = xar_read_fd(XAR(x)->fd, (char *)&XAR(x)->header.size+off, sizeof(XAR(x)->header.size)-off); + if ( r == -1 ) + return r; + + XAR(x)->header.size = ntohs(XAR(x)->header.size); + + if( XAR(x)->header.size > sizeof(xar_header_t) ) + sz2read = sizeof(xar_header_t); + else + sz2read = XAR(x)->header.size; + + off = sizeof(XAR(x)->header.magic) + sizeof(XAR(x)->header.size); + r = xar_read_fd(XAR(x)->fd, ((char *)&XAR(x)->header)+off, sizeof(xar_header_t)-off); + if ( r == -1 ) + return r; + + XAR(x)->header.version = ntohs(XAR(x)->header.version); + XAR(x)->header.toc_length_compressed = xar_ntoh64(XAR(x)->header.toc_length_compressed); + XAR(x)->header.toc_length_uncompressed = xar_ntoh64(XAR(x)->header.toc_length_uncompressed); + XAR(x)->header.cksum_alg = ntohl(XAR(x)->header.cksum_alg); + + off = XAR(x)->header.size - sz2read; + if( off > 0 ) + r = lseek(XAR(x)->fd, (off_t)off, SEEK_CUR); + + if ( (r == -1) && (errno != ESPIPE) ) + /* Some fatal error here perhaps? */ ; + + return 0; +} + +/* xar_open + * file: filename to open + * flags: flags on how to open the file. 0 for readonly, !0 for read/write + * Returns: allocated and initialized xar structure with an open + * file descriptor to the target xar file. If the xarchive is opened + * for writing, the file is created, and a heap file is opened. + */ +xar_t xar_open(const char *file, int32_t flags) { + xar_t ret; + + ret = xar_new(); + if( !ret ) return NULL; + if( !file ) + file = "-"; + XAR(ret)->filename = strdup(file); + OpenSSL_add_all_digests(); + if( flags ) { + char *tmp1, *tmp2, *tmp3, *tmp4; + tmp1 = tmp2 = strdup(file); + tmp3 = dirname(tmp2); + XAR(ret)->dirname = strdup(tmp3); + /* Create the heap file in the directory which will contain + * the target archive. /tmp or elsewhere may fill up. + */ + asprintf(&tmp4, "%s/xar.heap.XXXXXX", tmp3); + free(tmp1); + if( strcmp(file, "-") == 0 ) + XAR(ret)->fd = 1; + else{ + XAR(ret)->fd = open(file, O_WRONLY | O_CREAT | O_TRUNC | O_EXLOCK, 0644); + if( (-1 == XAR(ret)->fd ) && (ENOTSUP == errno) ){ + XAR(ret)->fd = open(file, O_WRONLY | O_CREAT | O_TRUNC , 0644); + } + } + XAR(ret)->heap_fd = mkstemp(tmp4); + if( XAR(ret)->heap_fd < 0 ) { + close(XAR(ret)->fd); + free(XAR(ret)); + return NULL; + } + unlink(tmp4); + free(tmp4); + + deflateInit(&XAR(ret)->zs, Z_BEST_COMPRESSION); + + if( XAR(ret)->fd < 0 ) { + xar_close(ret); + return NULL; + } + + /* default to using sha1, if nothing else is + * specified. + */ + XAR(ret)->heap_offset += 20; + XAR(ret)->heap_len += 20; + + xar_opt_set(ret, XAR_OPT_COMPRESSION, XAR_OPT_VAL_GZIP); + xar_opt_set(ret, XAR_OPT_FILECKSUM, XAR_OPT_VAL_SHA1); + } else { + unsigned char toccksum[EVP_MAX_MD_SIZE]; + unsigned char cval[EVP_MAX_MD_SIZE]; + unsigned int tlen; + const EVP_MD *md; + + if( strcmp(file, "-") == 0 ) + XAR(ret)->fd = 0; + else{ + XAR(ret)->fd = open(file, O_RDONLY | O_SHLOCK); + + if( (-1 == XAR(ret)->fd ) && (ENOTSUP == errno) ){ + XAR(ret)->fd = open(file, O_RDONLY); + } + + } + XAR(ret)->heap_fd = -1; + inflateInit(&XAR(ret)->zs); + if( XAR(ret)->fd < 0 ) { + xar_close(ret); + return NULL; + } + + if( xar_parse_header(ret) != 0 ) { + xar_close(ret); + return NULL; + } + + switch(XAR(ret)->header.cksum_alg) { + case XAR_CKSUM_NONE: + break; + case XAR_CKSUM_SHA1: + XAR(ret)->docksum = 1; + md = EVP_get_digestbyname("sha1"); + EVP_DigestInit(&XAR(ret)->toc_ctx, md); + break; + case XAR_CKSUM_MD5: + XAR(ret)->docksum = 1; + md = EVP_get_digestbyname("md5"); + EVP_DigestInit(&XAR(ret)->toc_ctx, md); + break; + default: + fprintf(stderr, "Unknown hashing algorithm, skipping\n"); + break; + }; + + if( xar_unserialize(ret) != 0 ) { + xar_close(ret); + return NULL; + } + + if( !XAR(ret)->docksum ) + return ret; + + EVP_DigestFinal(&XAR(ret)->toc_ctx, toccksum, &tlen); + + xar_read_fd(XAR(ret)->fd, cval, tlen); + XAR(ret)->heap_offset += tlen; + if( memcmp(cval, toccksum, tlen) != 0 ) { + fprintf(stderr, "Checksums do not match!\n"); + xar_close(ret); + return NULL; + } + } + + return ret; +} + +/* xar_close + * x: the xar_t to close + * Summary: closes all open file descriptors, frees all + * file structures and options, deallocates the xar_t its self. + * Returns 0 for success, -1 for failure. + */ +int xar_close(xar_t x) { + xar_attr_t a; + xar_file_t f; + int ret, retval = 0; + + /* If we're creating an archive */ + if( XAR(x)->heap_fd != -1 ) { + char *tmpser; + void *rbuf, *wbuf = NULL; + int fd, r, off, wbytes, rbytes; + long rsize, wsize; + z_stream zs; + uint64_t ungztoc, gztoc; + unsigned char chkstr[EVP_MAX_MD_SIZE]; + int tocfd; + char timestr[128]; + struct tm tmptm; + time_t t; + + tmpser = (char *)xar_opt_get(x, XAR_OPT_TOCCKSUM); + /* If no checksum type is specified, default to sha1 */ + if( !tmpser ) tmpser = XAR_OPT_VAL_SHA1; + + if( (strcmp(tmpser, XAR_OPT_VAL_NONE) != 0) ) { + const EVP_MD *md; + xar_prop_set(XAR_FILE(x), "checksum", NULL); + if( strcmp(tmpser, XAR_OPT_VAL_SHA1) == 0 ) { + md = EVP_get_digestbyname("sha1"); + EVP_DigestInit(&XAR(x)->toc_ctx, md); + XAR(x)->header.cksum_alg = htonl(XAR_CKSUM_SHA1); + xar_attr_set(XAR_FILE(x), "checksum", "style", XAR_OPT_VAL_SHA1); + xar_prop_set(XAR_FILE(x), "checksum/size", "20"); + } + if( strcmp(tmpser, XAR_OPT_VAL_MD5) == 0 ) { + md = EVP_get_digestbyname("md5"); + EVP_DigestInit(&XAR(x)->toc_ctx, md); + XAR(x)->header.cksum_alg = htonl(XAR_CKSUM_MD5); + xar_attr_set(XAR_FILE(x), "checksum", "style", XAR_OPT_VAL_MD5); + xar_prop_set(XAR_FILE(x), "checksum/size", "16"); + } + + xar_prop_set(XAR_FILE(x), "checksum/offset", "0"); + XAR(x)->docksum = 1; + } else { + XAR(x)->docksum = 0; + XAR(x)->header.cksum_alg = XAR_CKSUM_NONE; + } + + t = time(NULL); + gmtime_r(&t, &tmptm); + memset(timestr, 0, sizeof(timestr)); + strftime(timestr, sizeof(timestr), "%FT%T", &tmptm); + xar_prop_set(XAR_FILE(x), "creation-time", timestr); + + /* serialize the toc to a tmp file */ + asprintf(&tmpser, "%s/xar.toc.XXXXXX", XAR(x)->dirname); + fd = mkstemp(tmpser); + xar_serialize(x, tmpser); + unlink(tmpser); + free(tmpser); + asprintf(&tmpser, "%s/xar.toc.XXXXXX", XAR(x)->dirname); + tocfd = mkstemp(tmpser); + unlink(tmpser); + free(tmpser); + + + /* read the toc from the tmp file, compress it, and write it + * out to the archive. + */ + rsize = wsize = 4096; + const char * opt = xar_opt_get(x, XAR_OPT_RSIZE); + if ( opt ) { + rsize = strtol(opt, NULL, 0); + if ( ((rsize == LONG_MAX) || (rsize == LONG_MIN)) && (errno == ERANGE) ) { + rsize = wsize; + } + } + + rbuf = malloc(rsize); + if( !rbuf ) { + retval = -1; + goto CLOSE_BAIL; + } + zs.zalloc = Z_NULL; + zs.zfree = Z_NULL; + zs.opaque = Z_NULL; + deflateInit(&zs, Z_BEST_COMPRESSION); + + ungztoc = gztoc = 0; + + while(1) { + r = read(fd, rbuf, rsize); + if( (r < 0) && (errno == EINTR) ) + continue; + if( r == 0 ) + break; + + ungztoc += r; + + zs.avail_in = r; + zs.next_in = (void *)rbuf; + zs.next_out = NULL; + zs.avail_out = 0; + + wsize = rsize/2; + + off = 0; + while( zs.avail_in != 0 ) { + wsize *= 2; + wbuf = realloc(wbuf, wsize); + + zs.next_out = wbuf + off; + zs.avail_out = wsize - off; + + ret = deflate(&zs, Z_SYNC_FLUSH); + off = wsize - zs.avail_out; + } + + wbytes = off; + off = 0; + do { + r = write(tocfd, wbuf+off, wbytes-off); + if( (r < 0) && (errno == EINTR) ) + continue; + if( r < 0 ) { + xar_err_new(x); + xar_err_set_string(x, "Error closing xar archive"); + retval = -1; + goto CLOSEEND; + } + if( XAR(x)->docksum ) + EVP_DigestUpdate(&XAR(x)->toc_ctx, wbuf+off, r); + off += r; + gztoc += r; + } while( off < wbytes ); + + } + + zs.next_in = NULL; + zs.avail_in = 0; + zs.next_out = wbuf; + zs.avail_out = wsize; + + deflate(&zs, Z_FINISH); + r = write(tocfd, wbuf, wsize - zs.avail_out); + gztoc += r; + if( XAR(x)->docksum ) + EVP_DigestUpdate(&XAR(x)->toc_ctx, wbuf, r); + + deflateEnd(&zs); + + /* populate the header and write it out */ + XAR(x)->header.magic = htonl(XAR_HEADER_MAGIC); + XAR(x)->header.size = ntohs(sizeof(xar_header_t)); + XAR(x)->header.version = ntohs(1); + XAR(x)->header.toc_length_uncompressed = xar_ntoh64(ungztoc); + XAR(x)->header.toc_length_compressed = xar_ntoh64(gztoc); + + write(XAR(x)->fd, &XAR(x)->header, sizeof(xar_header_t)); + + /* Copy the temp compressed toc file into the file */ + lseek(tocfd, (off_t)0, SEEK_SET); + while(1) { + r = read(tocfd, rbuf, rsize); + if( (r < 0) && (errno == EINTR) ) + continue; + if( r == 0 ) + break; + + wbytes = r; + off = 0; + do { + r = write(XAR(x)->fd, rbuf+off, wbytes-off); + if( (r < 0) && (errno == EINTR) ) + continue; + if( r < 0 ) { + xar_err_new(x); + xar_err_set_string(x, "Error closing xar archive"); + retval = -1; + goto CLOSEEND; + } + + off += r; + } while( off < wbytes ); + } + + if( XAR(x)->docksum ) { + unsigned int l = r; + + memset(chkstr, 0, sizeof(chkstr)); + EVP_DigestFinal(&XAR(x)->toc_ctx, chkstr, &l); + r = l; + write(XAR(x)->fd, chkstr, r); + } + + /* If there are any signatures, get the signed data a sign it */ + if( XAR(x)->docksum && XAR(x)->signatures ) { + xar_signature_t sig; + uint32_t data_len = r; + uint32_t signed_len = 0; + uint8_t *signed_data = NULL; + + /* Loop through the signatures */ + for(sig = XAR(x)->signatures; sig; sig = XAR_SIGNATURE(sig)->next ){ + signed_len = XAR_SIGNATURE(sig)->len; + + /* If callback returns something other then 0, bail */ + if( 0 != sig->signer_callback( sig, sig->callback_context, chkstr, data_len, &signed_data, &signed_len ) ){ + fprintf(stderr, "Error signing data.\n"); + retval = -1; + goto CLOSE_BAIL; + } + + if( signed_len != XAR_SIGNATURE(sig)->len ){ + fprintf(stderr, "Signed data not the proper length. %i should be %i.\n",signed_len,XAR_SIGNATURE(sig)->len); + retval = -1; + goto CLOSE_BAIL; + } + + /* Write the signed data to the heap */ + write(XAR(x)->fd, signed_data,XAR_SIGNATURE(sig)->len); + + free(signed_data); + } + + xar_signature_remove( XAR(x)->signatures ); + XAR(x)->signatures = NULL; + } + + /* copy the heap from the temporary heap into the archive */ + if( lseek(XAR(x)->heap_fd, (off_t)0, SEEK_SET) < 0 ) { + fprintf(stderr, "Error lseeking to offset 0: %s\n", strerror(errno)); + exit(1); + } + rbytes = 0; + while(1) { + if( (XAR(x)->heap_len - rbytes) < rsize ) + rsize = XAR(x)->heap_len - rbytes; + + r = read(XAR(x)->heap_fd, rbuf, rsize); + if( (r < 0 ) && (errno == EINTR) ) + continue; + if( r == 0 ) + break; + + rbytes += r; + wbytes = r; + off = 0; + do { + r = write(XAR(x)->fd, rbuf+off, wbytes); + if( (r < 0 ) && (errno == EINTR) ) + continue; + if( r < 0 ) { + retval = -1; + goto CLOSEEND; + } + off += r; + } while( off < wbytes ); + + if( rbytes >= XAR(x)->heap_len ) + break; + } +CLOSEEND: + free(rbuf); + free(wbuf); + deflateEnd(&XAR(x)->zs); + } else { + inflateEnd(&XAR(x)->zs); + } + +CLOSE_BAIL: + /* continue deallocating the archive and return */ + while(XAR(x)->subdocs) { + xar_subdoc_remove(XAR(x)->subdocs); + } + + while(XAR(x)->attrs) { + a = XAR(x)->attrs; + XAR(x)->attrs = XAR_ATTR(a)->next; + xar_attr_free(a); + } + + while(XAR(x)->props) { + xar_prop_t p; + p = XAR(x)->props; + XAR(x)->props = XAR_PROP(p)->next; + xar_prop_free(p); + } + + while(XAR(x)->files) { + f = XAR(x)->files; + XAR(x)->files = XAR_FILE(f)->next; + xar_file_free(f); + } + + xmlHashFree(XAR(x)->ino_hash, NULL); + xmlHashFree(XAR(x)->link_hash, NULL); + xmlHashFree(XAR(x)->csum_hash, NULL); + close(XAR(x)->fd); + if( XAR(x)->heap_fd >= 0 ) + close(XAR(x)->heap_fd); + free((char *)XAR(x)->filename); + free((char *)XAR(x)->dirname); + free(XAR(x)->readbuf); + free((void *)x); + + return retval; +} + +/* xar_opt_get + * x: archive to get the option from + * option: name of the option + * Returns: a pointer to the value of the option + */ +const char *xar_opt_get(xar_t x, const char *option) { + xar_attr_t i; + for(i = XAR(x)->attrs; i && XAR_ATTR(i)->next; i = XAR_ATTR(i)->next) { + if(strcmp(XAR_ATTR(i)->key, option)==0) + return XAR_ATTR(i)->value; + } + if( i && (strcmp(XAR_ATTR(i)->key, option)==0) ) + return XAR_ATTR(i)->value; + return NULL; +} + +/* xar_opt_set + * x: the archive to set the option of + * option: the name of the option to set the value of + * value: the value to set the option to + * Returns: 0 for sucess, -1 for failure + */ +int32_t xar_opt_set(xar_t x, const char *option, const char *value) { + xar_attr_t i, a; + + if( (strcmp(option, XAR_OPT_TOCCKSUM) == 0) ) { + if( strcmp(value, XAR_OPT_VAL_NONE) == 0 ) { + XAR(x)->heap_offset = 0; + } + if( strcmp(value, XAR_OPT_VAL_SHA1) == 0 ) { + XAR(x)->heap_offset = 20; + } + if( strcmp(value, XAR_OPT_VAL_MD5) == 0 ) { + XAR(x)->heap_offset = 16; + } + } + for(i = XAR(x)->attrs; i ; i = XAR_ATTR(i)->next) { + if(strcmp(XAR_ATTR(i)->key, option)==0) { + free((char*)XAR_ATTR(i)->value); + XAR_ATTR(i)->value = strdup(value); + return 0; + } + } + a = xar_attr_new(); + XAR_ATTR(a)->key = strdup(option); + XAR_ATTR(a)->value = strdup(value); + XAR_ATTR(a)->next = XAR(x)->attrs; + XAR(x)->attrs = a; + return 0; +} + +/* xar_add_node + * x: archive the file should belong to + * f: parent node, possibly NULL + * name: name of the node to add + * realpath: real path to item, this is used if the item being archived is to be located at a different location in the tree + * then it is on the real filesystem. + * Returns: newly allocated and populated node + * Summary: helper function which adds a child of f and populates + * its properties. If f is NULL, the node will be added as a top + * level node of the archive, x. + */ +static xar_file_t xar_add_node(xar_t x, xar_file_t f, const char *name, const char *prefix, const char *realpath, int srcpath) { + xar_file_t ret; + const char *path; + char *tmp; + char idstr[32]; + + if( !f ) { + if( realpath ) + asprintf(&tmp, "%s", realpath); + else + asprintf(&tmp, "%s%s%s", XAR(x)->path_prefix, prefix, name); + + if( lstat(tmp, &XAR(x)->sbcache) != 0 ) { + free(tmp); + return NULL; + } + + ret = xar_file_new(NULL); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->parent = NULL; + XAR_FILE(ret)->fspath = tmp; + if( XAR(x)->files == NULL ) + XAR(x)->files = ret; + else { + XAR_FILE(ret)->next = XAR(x)->files; + XAR(x)->files = ret; + } + } else { + path = XAR_FILE(f)->fspath; + if( strcmp(prefix, "../") == 0 ) { + int len1, len2; + len1 = strlen(path); + len2 = strlen(name); + if( (len1>=len2) && (strcmp(path+(len1-len2), name) == 0) ) { + return f; + } + + } + + if( realpath ){ + asprintf(&tmp, "%s", realpath); + }else + asprintf(&tmp, "%s/%s%s", path, prefix, name); + + if( lstat(tmp, &XAR(x)->sbcache) != 0 ) { + free(tmp); + return NULL; + } + + ret = xar_file_new(f); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->fspath = tmp; + } + + xar_prop_set(ret, "name", name); + + if( xar_arcmod_archive(x, ret, XAR_FILE(ret)->fspath, NULL, 0) < 0 ) { + xar_file_t i = NULL; + if( f ) { + if( ret == XAR_FILE(f)->children ) + XAR_FILE(f)->children = XAR_FILE(ret)->next; + else + for( i = XAR_FILE(f)->children; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } else { + if( ret == XAR(x)->files ) + XAR(x)->files = XAR_FILE(ret)->next; + else + for( i = XAR(x)->files; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } + if( i ) + XAR_FILE(i)->next = XAR_FILE(ret)->next; + xar_file_free(ret); + return NULL; + } + + return ret; +} + +/* xar_add_pseudodir + * Summary: Adds a placeholder directory when archiving a file prior + * to archiving its path. + */ +static xar_file_t xar_add_pseudodir(xar_t x, xar_file_t f, const char *name, const char *prefix, const char *realpath) +{ + xar_file_t ret; + const char *path; + char *tmp; + char idstr[32]; + + if( !f ) { + if( realpath ) + asprintf(&tmp, "%s", realpath); + else + asprintf(&tmp, "%s%s%s", XAR(x)->path_prefix, prefix, name); + + if( lstat(tmp, &XAR(x)->sbcache) != 0 ) { + free(tmp); + return NULL; + } + + ret = xar_file_new(NULL); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->parent = NULL; + XAR_FILE(ret)->fspath = tmp; + if( XAR(x)->files == NULL ) + XAR(x)->files = ret; + else { + XAR_FILE(ret)->next = XAR(x)->files; + XAR(x)->files = ret; + } + } else { + path = XAR_FILE(f)->fspath; + if( strcmp(prefix, "../") == 0 ) { + int len1, len2; + len1 = strlen(path); + len2 = strlen(name); + if( (len1>=len2) && (strcmp(path+(len1-len2), name) == 0) ) { + return f; + } + + } + + if( realpath ){ + asprintf(&tmp, "%s", realpath); + }else + asprintf(&tmp, "%s/%s%s", path, prefix, name); + + if( lstat(tmp, &XAR(x)->sbcache) != 0 ) { + free(tmp); + return NULL; + } + + ret = xar_file_new(f); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->fspath = tmp; + } + xar_prop_set(ret, "name", name); + xar_prop_set(ret, "type", "directory"); + + return ret; +} + +/* xar_add_r + * Summary: a recursive helper function for adding a node to the + * tree. This will search all children of node f, looking for + * the path component. If found, will recurse into it. If not, + * will add the path component to the tree, and recurse into it. + * If f is NULL, will start with x->files. + */ +static xar_file_t xar_add_r(xar_t x, xar_file_t f, const char *path, const char *prefix) { + xar_file_t i = NULL, ret, ret2, start = NULL; + char *tmp1, *tmp2, *tmp3; + + if( path && (path[0] == '\0') ) { + return f; + } + + tmp1 = tmp2 = strdup(path); + tmp3 = strsep(&tmp2, "/"); + + if( tmp3 && tmp2 && (tmp3[0] == '\0') ) { + ret2 = xar_add_r(x, f, tmp2, ""); + free(tmp1); + return ret2; + } + + if( strcmp(tmp3, "..") == 0 ) { + char *prefixstr; + if( !XAR(x)->skipwarn ) { + xar_err_new(x); + xar_err_set_string(x, "Skipping .. in path"); + xar_err_callback(x, XAR_SEVERITY_WARNING, XAR_ERR_ARCHIVE_CREATION); + XAR(x)->skipwarn = 1; + } + asprintf(&prefixstr, "%s../", prefix); + ret2 = xar_add_r(x, f, tmp2, prefixstr); + free(prefixstr); + free(tmp1); + return ret2; + } + + if( strcmp(tmp3, ".") == 0 ) { + if( tmp2 ) + ret2 = xar_add_r(x, f, tmp2, prefix); + else + ret2 = NULL; + free(tmp1); + return ret2; + } + + if( !f ) { + start = XAR(x)->files; + } else { + start = XAR_FILE(f)->children; + } + + /* Search all the siblings */ + for( i = start; i; i = XAR_FILE(i)->next ) { + const char *n; + xar_prop_get(i, "name", &n); + if( strcmp(n, tmp3) == 0 ) { + if( !tmp2 ) { + /* Node already exists, and it is i */ + free(tmp1); + return i; + } + ret2 = xar_add_r(x, i, tmp2, ""); + free(tmp1); + return ret2; + } + } + + /* tmp3 was not found in children of start, so we add it */ + if( tmp2 ) { + //ret = xar_add_node(x, f, tmp3, prefix, NULL, 1); + ret = xar_add_pseudodir(x, f, tmp3, prefix, NULL); + } else { + ret = xar_add_node(x, f, tmp3, prefix, NULL, 0); + } + + if( !ret ) { + free(tmp1); + return NULL; + } + + if( !tmp2 ) { + /* We've added the final piece, done, don't recurse */ + free(tmp1); + return ret; + } + + /* still more to add, recurse */ + ret2 = xar_add_r(x, ret, tmp2, ""); + free(tmp1); + return ret2; +} + +/* xar_add + * x: archive to add the file to + * path: path to file + * Returns: allocated an populated xar_file_t representing the + * specified file. + * Summary: if a full path "foo/bar/blah" is specified, then any + * directories not already existing in the archive will be added + * automagically. The returned xar_file_t represents the file + * specified, not the parent of the directory tree. + * For instance, if "foo/bar/blah" is specified, the xar_file_t + * representing "blah" will be returned. + */ +xar_file_t xar_add(xar_t x, const char *path) { +#ifdef __APPLE__ + xar_file_t ret; + if( (ret = xar_underbar_check(x, NULL, path)) ) + return ret; +#endif + + if( path[0] == '/' ) { + XAR(x)->path_prefix = "/"; + path++; + } else + XAR(x)->path_prefix = ""; + return xar_add_r(x, NULL, path, ""); +} + +/* xar_add_frombuffer +* x: archive to add the file to +* parent: parent node, possibly NULL +* name: name of file +* buffer: buffer for file contents +* length: length of buffer +* Returns: allocated an populated xar_file_t representing the +* specified file. +* Summary: Use this to add chunks of named data to a xar without +* using the filesystem. +*/ + +xar_file_t xar_add_frombuffer(xar_t x, xar_file_t parent, const char *name, char *buffer, size_t length) { + xar_file_t ret; + char idstr[32]; + + if( !parent ) { + ret = xar_file_new(NULL); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->parent = NULL; + if( XAR(x)->files == NULL ) + XAR(x)->files = ret; + else { + XAR_FILE(ret)->next = XAR(x)->files; + XAR(x)->files = ret; + } + } else { + ret = xar_file_new(parent); + if( !ret ) + return NULL; + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->fspath = NULL; + } + + xar_prop_set(ret, "name", name); + + //int32_t xar_arcmod_archive(xar_t x, xar_file_t f, const char *file, const char *buffer, size_t len) + if( xar_arcmod_archive(x, ret, NULL , buffer , length) < 0 ) { + xar_file_t i; + if( parent ) { + for( i = XAR_FILE(parent)->children; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } else { + for( i = XAR(x)->files; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } + if( i ) + XAR_FILE(i)->next = XAR_FILE(ret)->next; + xar_file_free(ret); + return NULL; + } + + return ret; +} + +xar_file_t xar_add_folder(xar_t x, xar_file_t f, const char *name, struct stat *info) +{ + xar_file_t ret; + char idstr[32]; + + if( info ) + memcpy(&XAR(x)->sbcache,info,sizeof(struct stat)); + + ret = xar_file_new(f); + if( !ret ) + return NULL; + + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->fspath = NULL; + + if( !f ) { + XAR_FILE(ret)->parent = NULL; + + if( XAR(x)->files == NULL ) + XAR(x)->files = ret; + else { + XAR_FILE(ret)->next = XAR(x)->files; + XAR(x)->files = ret; + } + } + + xar_prop_set(ret, "name", name); + + if( xar_arcmod_archive(x, ret, XAR_FILE(ret)->fspath, NULL, 0) < 0 ) { + xar_file_t i; + if( f ) { + for( i = XAR_FILE(f)->children; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } else { + for( i = XAR(x)->files; i && (XAR_FILE(i)->next != ret); i = XAR_FILE(i)->next ); + } + if( i ) + XAR_FILE(i)->next = XAR_FILE(ret)->next; + xar_file_free(ret); + return NULL; + } + + return ret; +} + +xar_file_t xar_add_frompath(xar_t x, xar_file_t parent, const char *name, const char *realpath) +{ + return xar_add_node(x, parent, name , "" , realpath, 1); +} + +xar_file_t xar_add_from_archive(xar_t x, xar_file_t parent, const char *name, xar_t sourcearchive, xar_file_t sourcefile) +{ + xar_file_t ret; + char idstr[32]; + + ret = xar_file_replicate(sourcefile, parent); + + if( !ret ) + return NULL; + + memset(idstr, 0, sizeof(idstr)); + snprintf(idstr, sizeof(idstr)-1, "%"PRIu64, ++XAR(x)->last_fileid); + xar_attr_set(ret, NULL, "id", idstr); + XAR_FILE(ret)->fspath = NULL; + + if( !parent ) { + XAR_FILE(ret)->parent = NULL; + + if( XAR(x)->files == NULL ) + XAR(x)->files = ret; + else { + XAR_FILE(ret)->next = XAR(x)->files; + XAR(x)->files = ret; + } + } + + xar_prop_set(ret, "name", name); + + /* iterate through all the properties, see if any of them have an offset */ + xar_prop_t p = xar_prop_pfirst(ret); + + do{ + xar_prop_t tmpp; + + tmpp = xar_prop_pget(p, "offset"); + if(tmpp) { + if( 0 != xar_attrcopy_from_heap_to_heap(sourcearchive, sourcefile, p, x, ret)){ + xar_file_free(ret); + ret = NULL; + break; + } + } + + }while( (p = xar_prop_pnext(p)) ); + + return ret; +} + +/* xar_extract_tofile +* x: archive to extract from +* f: file associated with x +* Returns 0 on success, -1 on failure +* Summary: This actually does the file extraction. +* No traversal is performed, it is assumed all directory paths +* leading up to f already exist. +*/ +int32_t xar_extract_tofile(xar_t x, xar_file_t f, const char *path) { + return xar_arcmod_extract(x, f, path,NULL, 0); +} + + +/* xar_extract_tobuffer +* x: archive to extract from +* buffer: buffer to extract to +* Returns 0 on success, -1 on failure. +* Summary: This is the entry point for extraction to a buffer. +* On success, a buffer is allocated with the contents of the file +* specified. The caller is responsible for freeing the returend buffer. +* Example: xar_extract_tobuffer(x, "foo/bar/blah",&buffer) +*/ +int32_t xar_extract_tobuffer(xar_t x, xar_file_t f, char **buffer) { + size_t size; + + return xar_extract_tobuffersz(x, f, buffer, &size); +} + +/* xar_extract_tobuffer +* x: archive to extract from +* buffer: buffer to extract to +* size: On return, this will contain the size of the memory pointed to by buffer +* Returns 0 on success, -1 on failure. +* Summary: This is the entry point for extraction to a buffer. +* On success, a buffer is allocated with the contents of the file +* specified. The caller is responsible for freeing the returend buffer. +* Example: xar_extract_tobuffer(x, "foo/bar/blah",&buffer) +*/ +int32_t xar_extract_tobuffersz(xar_t x, xar_file_t f, char **buffer, size_t *size) { + const char *sizestring = NULL; + + if(0 != xar_prop_get(f,"data/size",&sizestring)){ + return -1; + } + + *size = strtoull(sizestring, (char **)NULL, 10); + *buffer = malloc(*size); + + if(!(*buffer)){ + return -1; + } + + return xar_arcmod_extract(x,f,NULL,*buffer,*size); +} + +/* xar_extract + * x: archive to extract from + * path: path to file to extract + * Returns 0 on success, -1 on failure. + * Summary: This is the entry point for extraction. This will find + * the file node described by path, extract any directories needed + * to extract the node, and finally extract the file. + * Example: xar_extract(x, "foo/bar/blah") + * If foo does not exist, xar_extract will extract foo from the + * archive, extract bar from the archive, and then extract blah. + * Total extractions will be "foo", "foo/bar", and "foo/bar/blah". + */ +int32_t xar_extract(xar_t x, xar_file_t f) { + struct stat sb; + char *tmp1, *dname; + xar_file_t tmpf; + + if( (strstr(XAR_FILE(f)->fspath, "/") != NULL) && (stat(XAR_FILE(f)->fspath, &sb)) && (XAR_FILE(f)->parent_extracted == 0) ) { + tmp1 = strdup(XAR_FILE(f)->fspath); + dname = dirname(tmp1); + tmpf = xar_file_find(XAR(x)->files, dname); + if( !tmpf ) { + xar_err_set_string(x, "Unable to find file"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + return -1; + } + free(tmp1); + XAR_FILE(f)->parent_extracted++; + xar_extract(x, tmpf); + } + + return xar_extract_tofile(x, f, XAR_FILE(f)->fspath); +} + +/* xar_verify +* x: archive to extract from +* f: file to verify +* Returns 0 on success, -1 on failure. +* Summary: This function allows for verification of +* an entry without extraction. If there is no checksum +* the verification will pass. +*/ +int32_t xar_verify(xar_t x, xar_file_t f) { + return xar_arcmod_verify(x,f); +} + +/* toc_read_callback + * context: context passed through from the reader + * buffer: buffer to read into + * len: size of buffer + * Returns: number of bytes read or -1 in case of error + * Summary: internal callback for xmlReaderForIO. + */ +static int toc_read_callback(void *context, char *buffer, int len) { + xar_t x = (xar_t)context; + int ret, off = 0; + + if ( ((!XAR(x)->offset) || (XAR(x)->offset == XAR(x)->readbuf_len)) && (XAR(x)->toc_count != XAR(x)->header.toc_length_compressed) ) { + XAR(x)->offset = 0; + if( (XAR(x)->readbuf_len - off) + XAR(x)->toc_count > XAR(x)->header.toc_length_compressed ) + ret = xar_read_fd(XAR(x)->fd, XAR(x)->readbuf, XAR(x)->header.toc_length_compressed - XAR(x)->toc_count); + else + ret = read(XAR(x)->fd, XAR(x)->readbuf, XAR(x)->readbuf_len); + if ( ret == -1 ) + return ret; + + if ( XAR(x)->docksum ) + EVP_DigestUpdate(&XAR(x)->toc_ctx, XAR(x)->readbuf, ret); + + XAR(x)->toc_count += ret; + off += ret; + } + + if( off && (off < XAR(x)->readbuf_len) ) + XAR(x)->readbuf_len = off; + XAR(x)->zs.next_in = XAR(x)->readbuf + XAR(x)->offset; + XAR(x)->zs.avail_in = XAR(x)->readbuf_len - XAR(x)->offset; + XAR(x)->zs.next_out = (void *)buffer; + XAR(x)->zs.avail_out = len; + + ret = inflate(&XAR(x)->zs, Z_SYNC_FLUSH); + if( ret < 0 ) + return -1; + + XAR(x)->offset = XAR(x)->readbuf_len - XAR(x)->zs.avail_in; + + return len - XAR(x)->zs.avail_out; +} + +/* close_callback + * context: this will be a xar_t + * Returns: 0 or -1 in case of error + * Summary: this is the callback for xmlTextReaderForIO to close the IO + */ +static int close_callback(void *context) { + return 0; +} + +/* xar_serialize + * x: xar to serialize + * file: file to serialize to + * Summary: serializes the archive out to xml. + */ +void xar_serialize(xar_t x, const char *file) { + xmlTextWriterPtr writer; + xar_subdoc_t i; + + writer = xmlNewTextWriterFilename(file, 0); + xmlTextWriterStartDocument(writer, "1.0", "UTF-8", NULL); + xmlTextWriterSetIndent(writer, 4); + xmlTextWriterStartElement(writer, BAD_CAST("xar")); + + for( i = XAR(x)->subdocs; i; i = xar_subdoc_next(i) ) + xar_subdoc_serialize(i, writer, 1); + + xmlTextWriterStartElement(writer, BAD_CAST("toc")); + + if( XAR(x)->props ) + xar_prop_serialize(XAR(x)->props, writer); + + if( XAR(x)->signatures ) + xar_signature_serialize(XAR(x)->signatures,writer); + + if( XAR(x)->files ) + xar_file_serialize(XAR(x)->files, writer); + + xmlTextWriterEndDocument(writer); + xmlFreeTextWriter(writer); + return; +} + +/* xar_unserialize + * x: xar archive to unserialize to. Must have been allocated with xar_open + * file: the xml filename to unserialize from + * Summary: Takes the TOC representation from file and creates the + * corresponding in-memory representation. + */ +static int32_t xar_unserialize(xar_t x) { + xmlTextReaderPtr reader; + xar_file_t f = NULL; + const xmlChar *name, *prefix, *uri; + int type, noattr, ret; + + reader = xmlReaderForIO(toc_read_callback, close_callback, XAR(x), NULL, NULL, 0); + if( !reader ) return -1; + + while( (ret = xmlTextReaderRead(reader)) == 1 ) { + type = xmlTextReaderNodeType(reader); + noattr = xmlTextReaderAttributeCount(reader); + name = xmlTextReaderConstLocalName(reader); + if( type != XML_READER_TYPE_ELEMENT ) + continue; + if(strcmp((const char*)name, "xar") != 0) + continue; + while( (ret = xmlTextReaderRead(reader)) == 1 ) { + type = xmlTextReaderNodeType(reader); + noattr = xmlTextReaderAttributeCount(reader); + name = xmlTextReaderConstLocalName(reader); + if( type == XML_READER_TYPE_ELEMENT ) { + if(strcmp((const char*)name, "toc") == 0) { + while( (ret = xmlTextReaderRead(reader)) == 1 ) { + type = xmlTextReaderNodeType(reader); + noattr = xmlTextReaderAttributeCount(reader); + name = xmlTextReaderConstLocalName(reader); + if( type == XML_READER_TYPE_ELEMENT ) { + if(strcmp((const char*)name, "file") == 0) { + f = xar_file_unserialize(x, NULL, reader); + XAR_FILE(f)->next = XAR(x)->files; + XAR(x)->files = f; + } else if( strcmp((const char*)name, "signature") == 0 ){ + xar_signature_t sig = NULL; + sig = xar_signature_unserialize(x, reader ); + + if( !sig ) { + xmlFreeTextReader(reader); + xmlDictCleanup(); + xmlCleanupCharEncodingHandlers(); + return -1; + } + + if( XAR(x)->signatures ) + XAR_SIGNATURE(XAR(x)->signatures)->next = XAR_SIGNATURE(sig); + else + XAR(x)->signatures = sig; + + } else { + xar_prop_unserialize(XAR_FILE(x), NULL, reader); + } + } + } + if( ret == -1 ) { + xmlFreeTextReader(reader); + xmlDictCleanup(); + xmlCleanupCharEncodingHandlers(); + return -1; + } + } else { + xar_subdoc_t s; + int i; + + prefix = xmlTextReaderPrefix(reader); + uri = xmlTextReaderNamespaceUri(reader); + + i = xmlTextReaderAttributeCount(reader); + if( i > 0 ) { + for(i = xmlTextReaderMoveToFirstAttribute(reader); i == 1; i = xmlTextReaderMoveToNextAttribute(reader)) { + xar_attr_t a; + const char *aname = (const char *)xmlTextReaderConstLocalName(reader); + const char *avalue = (const char *)xmlTextReaderConstValue(reader); + + if( aname && (strcmp("subdoc_name", aname) == 0) ) { + name = (const unsigned char *)avalue; + } else { + a = xar_attr_new(); + XAR_ATTR(a)->key = strdup(aname); + XAR_ATTR(a)->value = strdup(avalue); + XAR_ATTR(a)->next = XAR_SUBDOC(s)->attrs; + XAR_SUBDOC(s)->attrs = XAR_ATTR(a); + } + } + } + + s = xar_subdoc_new(x, (const char *)name); + xar_subdoc_unserialize(s, reader); + } + } + if( (type == XML_READER_TYPE_END_ELEMENT) && (strcmp((const char *)name, "toc")==0) ) { + break; + } + } + if( ret == -1 ) { + xmlFreeTextReader(reader); + xmlDictCleanup(); + xmlCleanupCharEncodingHandlers(); + return -1; + } + } + + if( ret == -1 ) { + xmlFreeTextReader(reader); + xmlDictCleanup(); + xmlCleanupCharEncodingHandlers(); + return -1; + } + + xmlFreeTextReader(reader); + xmlDictCleanup(); + xmlCleanupCharEncodingHandlers(); + return 0; +} diff --git a/setup/xar-1.5.2/lib/archive.d b/setup/xar-1.5.2/lib/archive.d new file mode 100644 index 0000000..56283c1 --- /dev/null +++ b/setup/xar-1.5.2/lib/archive.d @@ -0,0 +1,23 @@ +lib/archive.o : lib/archive.c /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h include/config.h include/xar.h \ + lib/filetree.h lib/ea.h lib/archive.h lib/signature.h lib/arcmod.h \ + lib/io.h lib/util.h lib/subdoc.h lib/darwinattr.h diff --git a/setup/xar-1.5.2/lib/archive.h b/setup/xar-1.5.2/lib/archive.h new file mode 100644 index 0000000..cf45f05 --- /dev/null +++ b/setup/xar-1.5.2/lib/archive.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + + +#ifndef _XAR_ARCHIVE_H_ +#define _XAR_ARCHIVE_H_ +#include +#include +#include +#include +#include +#include "xar.h" +#include "filetree.h" + +struct errctx { + const char *str; + int saved_errno; + xar_file_t file; + void *usrctx; +}; + +struct __xar_t { + xar_prop_t props; + xar_attr_t attrs; /* archive options, such as rsize */ + const char *prefix; + const char *ns; + const char *filler1; + const char *filler2; + xar_file_t files; /* file forest */ + const char *filename; /* name of the archive we are operating on */ + char *dirname; /* directory of the archive, used in creation */ + int fd; /* open file descriptor for the archive */ + int heap_fd; /* fd for tmp heap archive, used in creation */ + off_t heap_offset; /* current offset within the heap */ + off_t heap_len; /* current length of the heap */ + xar_header_t header; /* header of the xar archive */ + void *readbuf; /* buffer for reading/writing compressed toc */ + size_t readbuf_len; /* length of readbuf */ + size_t offset; /* offset into readbuf for keeping track + * between callbacks. */ + size_t toc_count; /* current bytes read of the toc */ + z_stream zs; /* gz state for compressing/decompressing toc */ + char *path_prefix; /* used for distinguishing absolute paths */ + err_handler ercallback; /* callback for errors/warnings */ + struct errctx errctx; /* error callback context */ + xar_subdoc_t subdocs; /* linked list of subdocs */ + xar_signature_t signatures; /* linked list of signatures */ + uint64_t last_fileid; /* unique fileid's in the archive */ + xmlHashTablePtr ino_hash; /* Hash for looking up hardlinked files (add)*/ + xmlHashTablePtr link_hash; /* Hash for looking up hardlinked files (extract)*/ + xmlHashTablePtr csum_hash; /* Hash for looking up checksums of files */ + EVP_MD_CTX toc_ctx; + int docksum; + int skipwarn; + struct stat sbcache; +}; + +#define XAR(x) ((struct __xar_t *)(x)) + +#endif /* _XAR_ARCHIVE_H_ */ diff --git a/setup/xar-1.5.2/lib/archive.o b/setup/xar-1.5.2/lib/archive.o new file mode 100644 index 0000000000000000000000000000000000000000..5142d09f3aa1623e82736150dd5428cb946c64c1 GIT binary patch literal 61912 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 Ne7?`rxz7Ice*nS5+;RW_ literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/archive.static.d b/setup/xar-1.5.2/lib/archive.static.d new file mode 100644 index 0000000..f26e92b --- /dev/null +++ b/setup/xar-1.5.2/lib/archive.static.d @@ -0,0 +1,23 @@ +archive.o: lib/archive.c /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h include/config.h include/xar.h \ + lib/filetree.h lib/ea.h lib/archive.h lib/signature.h lib/arcmod.h \ + lib/io.h lib/util.h lib/subdoc.h lib/darwinattr.h diff --git a/setup/xar-1.5.2/lib/archive.static.o b/setup/xar-1.5.2/lib/archive.static.o new file mode 100644 index 0000000000000000000000000000000000000000..ec8ec6367e85818e3b16df76622faeb56f9f257d GIT binary patch literal 61648 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 Qy8bZU2h_Q^{Urat0a)~UcmMzZ literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/arcmod.c b/setup/xar-1.5.2/lib/arcmod.c new file mode 100644 index 0000000..0b7c1cd --- /dev/null +++ b/setup/xar-1.5.2/lib/arcmod.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2007 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + +#include "arcmod.h" +#include "stat.h" +#include "data.h" +#include "linuxattr.h" +#include "fbsdattr.h" +#include "darwinattr.h" +#include "ext2.h" + +struct arcmod xar_arcmods[] = { + { xar_stat_archive, xar_stat_extract }, /* must be first */ + { xar_linuxattr_archive, xar_linuxattr_extract }, + { xar_fbsdattr_archive, xar_fbsdattr_extract }, + { xar_darwinattr_archive, xar_darwinattr_extract }, + { xar_ext2attr_archive, xar_ext2attr_extract }, + { xar_data_archive, xar_data_extract }, + /* Add new modules here */ + { NULL, xar_set_perm }, + { NULL, xar_flags_extract } +}; + +/* xar_arcmod_archive + * x: archive to add the file to + * f: node representing the file + * file: the filesystem path to the file + * Returns: 0 on success + * Summary: This is the entry point to actual file archival. + */ +int32_t xar_arcmod_archive(xar_t x, xar_file_t f, const char *file, const char *buffer, size_t len) { + int i; + int32_t ret; + for(i = 0; i < (sizeof(xar_arcmods)/sizeof(struct arcmod)); i++) { + if( xar_arcmods[i].archive ) { + ret = xar_arcmods[i].archive(x, f, file, buffer, len); + if( ret < 0 ) { + return ret; + } + if( ret > 0 ) { + return 0; + } + } + } + return 0; +} + +/* xar_arcmod_extract + * x: archive to extract the file from + * f: node representing the file + * file: the filesystem path to the target file + * Returns: 0 on success + * Summary: This is the entry point to actual file archival. + */ +int32_t xar_arcmod_extract(xar_t x, xar_file_t f, const char *file, char *buffer, size_t len) { + int i; + int32_t ret; + for(i = 0; i < (sizeof(xar_arcmods)/sizeof(struct arcmod)); i++) { + if( xar_arcmods[i].extract ) { + ret = xar_arcmods[i].extract(x, f, file, buffer, len); + if( ret < 0 ) { + return ret; + } + if( ret > 0 ) { + return 0; + } + } + } + return 0; +} + + +int32_t xar_arcmod_verify(xar_t x, xar_file_t f){ + return xar_data_verify(x,f); +} diff --git a/setup/xar-1.5.2/lib/arcmod.d b/setup/xar-1.5.2/lib/arcmod.d new file mode 100644 index 0000000..d1afd69 --- /dev/null +++ b/setup/xar-1.5.2/lib/arcmod.d @@ -0,0 +1,23 @@ +lib/arcmod.o : lib/arcmod.c lib/arcmod.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/stat.h lib/data.h \ + lib/linuxattr.h lib/fbsdattr.h lib/darwinattr.h lib/ext2.h diff --git a/setup/xar-1.5.2/lib/arcmod.h b/setup/xar-1.5.2/lib/arcmod.h new file mode 100644 index 0000000..32c9a1e --- /dev/null +++ b/setup/xar-1.5.2/lib/arcmod.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan + */ + + +#ifndef _XAR_ARCMOD_H_ +#define _XAR_ARCMOD_H_ +#include "xar.h" +#include "filetree.h" + + +typedef int32_t (*arcmod_archive)(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len); +typedef int32_t (*arcmod_extract)(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len); + +struct arcmod { + arcmod_archive archive; + arcmod_extract extract; +}; + +int32_t xar_arcmod_archive(xar_t x, xar_file_t f, const char *file, const char *buffer, size_t len); +int32_t xar_arcmod_extract(xar_t x, xar_file_t f, const char *file, char *buffer, size_t len); + +int32_t xar_arcmod_verify(xar_t x, xar_file_t f); + +#endif /* _XAR_ARCMOD_H_ */ diff --git a/setup/xar-1.5.2/lib/arcmod.o b/setup/xar-1.5.2/lib/arcmod.o new file mode 100644 index 0000000000000000000000000000000000000000..2e7973bebedbc2211aae17414c3d98c7d517990a GIT binary patch literal 8048 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. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice(s), +// this list of conditions and the following disclaimer unmodified other than +// the allowable addition of one or more copyright notices. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice(s), this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) `AS IS' AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +// NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +//============================================================================== +// +// Emulate vasprintf() and asprintf(). +// +//============================================================================== + +#include +#include +#include + +static inline int +vasprintf(char **rResult, const char *aFormat, va_list aAp) +{ + int rVal; + char *result; + va_list ap; +#define XarAsprintfStartLen 16 + + result = (char *) malloc(XarAsprintfStartLen); + if (result == NULL) + { + rVal = -1; + goto RETURN; + } + + va_copy(ap, aAp); + rVal = vsnprintf(result, XarAsprintfStartLen, aFormat, ap); + va_end(ap); + + if (rVal == -1) + { + goto RETURN; + } + else if (rVal >= XarAsprintfStartLen) + { + free(result); + result = (char *) malloc(rVal + 1); + if (result == NULL) + { + rVal = -1; + goto RETURN; + } + + va_copy(ap, aAp); + rVal = vsnprintf(result, rVal + 1, aFormat, aAp); + va_end(ap); + } + + *rResult = result; + RETURN: +#undef XarAsprintfStartLen + return rVal; +} + +static int +asprintf(char **rResult, const char *aFormat, ...) +{ + int rVal; + va_list ap; + + va_start(ap, aFormat); + rVal = vasprintf(rResult, aFormat, ap); + va_end(ap); + + return rVal; +} diff --git a/setup/xar-1.5.2/lib/b64.c b/setup/xar-1.5.2/lib/b64.c new file mode 100644 index 0000000..b3c4a5c --- /dev/null +++ b/setup/xar-1.5.2/lib/b64.c @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2004 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 1-Oct-2004 + * DRI: Rob Braun + */ + +#include +#include + +static unsigned char table [] = { +'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', +'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', +'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', +'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', +'s', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', +'3', '4', '5', '6', '7', '8', '9', '+', '/' }; + +unsigned char* xar_to_base64(const unsigned char* input, int len) +{ + unsigned char b6; + /*UNUSED unsigned char tmp; */ + unsigned char count = 0; + int i=0; + unsigned char* output; + int outsize = (((float)len)*4/3)+5; + + output = malloc(outsize); + if( !output ) + return NULL; + + while(1) { + if( i >= len ) { + output[count++] = '\n'; + output[count++] = '\0'; + return output; + } + b6 = input[i]; + b6 >>= 2; + output[count++] = table[b6]; + + b6 = input[i++]; + b6 &= 0x03; + b6 <<= 4; + if( i >= len ) { + output[count++] = table[b6]; + output[count++] = '='; + output[count++] = '='; + output[count++] = '\n'; + output[count++] = '\0'; + return output; + } + b6 |= input[i] >> 4; + output[count++] = table[b6]; + + b6 = input[i++] & 0x0F; + b6 <<= 2; + if( i >= len ) { + output[count++] = table[b6]; + output[count++] = '='; + output[count++] = '\n'; + output[count++] = '\0'; + return output; + } + b6 |= input[i] >> 6; + output[count++] = table[b6]; + + b6 = input[i++] & 0x3F; + output[count++] = table[b6]; + } +} + +#ifdef _BTEST_ +int main(int argc, char* argv[]) { + unsigned char* enc = benc(argv[1], strlen(argv[1])); + printf("%s", enc); + printf("%s\n", bdec(enc, strlen(enc))); +} +#endif + + +/* + * The code below derives from "Secure Programming Cookbook for C and + * C++"* and adapted by Kogule, Ryo (kogule@opendarwin.org). + * + * *John Viega and Matt Messier, O'Reilly, 2003 + * http://www.secureprogramming.com/ + */ + +static char b64revtb[256] = { + -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*0-15*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*16-31*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, /*32-47*/ + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1, /*48-63*/ + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /*64-79*/ + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, /*80-95*/ + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, /*96-111*/ + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, /*112-127*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*128-143*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*144-159*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*160-175*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*176-191*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*192-207*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*208-223*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*224-239*/ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 /*240-255*/ +}; + +static unsigned int raw_base64_decode( + const unsigned char *input, unsigned char *output, int len) +{ + + unsigned int x, i = 0, ignr = 0; + unsigned char buf[3], pad = 0; + + while (i < len || !pad) { + x = b64revtb[input[i++]]; + switch (x) { + case -3: /* NULL TERMINATOR */ + if ((i - ignr - 1) % 4) return 1; + return 0; + case -2: /* PADDING CHARACTER */ + if ((i - ignr - 1) % 4 < 2) { + /* Invalid here */ + return 1; + } else if ((i - ignr - 1) % 4 == 2) { + /* Make sure there's appropriate padding */ + if (input[i] != '=') return 1; + buf[2] = 0; + pad = 2; + break; + } else { + pad = 1; + break; + } + return 0; + case -1: + ignr++; + break; + default: + switch ((i - ignr - 1) % 4) { + case 0: + buf[0] = x << 2; + break; + case 1: + buf[0] |= (x >> 4); + buf[1] = x << 4; + break; + case 2: + buf[1] |= (x >> 2); + buf[2] = x << 6; + break; + case 3: + buf[2] |= x; + for (x = 0; x < 3 - pad; x++) *output++ = buf[x]; + break; + } + break; + } + } + if (i > len) return 2; + for (x = 0; x < 3 - pad; x++) *output++ = buf[x]; + return 0; +} + +unsigned char* xar_from_base64(const unsigned char* input, int len) +{ + int err; + unsigned char *output; + + output = malloc(3 * (len / 4 + 1)); + if (!output) return NULL; + + err = raw_base64_decode(input, output, len); + + if (err) { + free(output); + return NULL; + } + return output; +} diff --git a/setup/xar-1.5.2/lib/b64.d b/setup/xar-1.5.2/lib/b64.d new file mode 100644 index 0000000..24a2630 --- /dev/null +++ b/setup/xar-1.5.2/lib/b64.d @@ -0,0 +1 @@ +lib/b64.o : lib/b64.c diff --git a/setup/xar-1.5.2/lib/b64.h b/setup/xar-1.5.2/lib/b64.h new file mode 100644 index 0000000..120b2e9 --- /dev/null +++ b/setup/xar-1.5.2/lib/b64.h @@ -0,0 +1,13 @@ +/* + * Rob Braun + * 1-Oct-2004 + * Copyright (c) 2004 Rob Braun. All rights reserved. + */ + +#ifndef _XAR_BASE64_H_ +#define _XAR_BASE64_H_ + +unsigned char* xar_to_base64(const unsigned char* input, int len); +unsigned char* xar_from_base64(const unsigned char* input, int len); + +#endif /* _XAR_BASE64_H_ */ diff --git a/setup/xar-1.5.2/lib/b64.o b/setup/xar-1.5.2/lib/b64.o new file mode 100644 index 0000000000000000000000000000000000000000..e60653d50ee026dc67a14c1a092deb6e876ba2bf GIT binary patch literal 7080 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 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/b64.static.d b/setup/xar-1.5.2/lib/b64.static.d new file mode 100644 index 0000000..7b3465a --- /dev/null +++ b/setup/xar-1.5.2/lib/b64.static.d @@ -0,0 +1 @@ +b64.o: lib/b64.c diff --git a/setup/xar-1.5.2/lib/b64.static.o b/setup/xar-1.5.2/lib/b64.static.o new file mode 100644 index 0000000000000000000000000000000000000000..9bc8fe2bd05ef4fa14693775150e04f68b74242b GIT binary patch literal 6992 zcmc&(TWl2989p;>cE{H>*d*MNEFlIH*j*dUaxsR*X2KE^N&tt8C}wv(zLfQ@S&Q*{z9$^HAjh71By=Un)hdWYN$@1|(1?|%s;IZ@2wJG|jg+2)M>VdTWq*s3u_#}|N zl|lVLS|1N2PmhyC-WB9WPN{_S>JO^*J8!Rd_UrdQ+M}cz?mPPj1HGWB4BjMp*^fj$flr+MXE1h3g}@Lm-S9xRKVyv928^*BmYMT> z3e=y$UltW8pyt1Vzqj07u#Aw?v~&kDIhsC}CC0N=n;dfDgc)Nv8@LS7XKm4>eksVV)zXqU6U z;Q`cjEt8Ww2mq2pIVt_&=n;@Sq!JY+lpM0B^hcw$AbA85gdg3~hruBkT?F|K24EHg z>4w4HhGA#_{`n75#Yufwfd#z#xeb(7UQZ8J>%-l5E?nrA&Dcn1arOjWK!p2{B6m9~ZkLv&cc{%NsaF*~hlp zy6yUFI|4gjuiy2??jP-WbMLzhUDlFNA;Au>};jGP_OHn`?lBDW4#UYRj2pcWAkJ`2~eV&f>ZAN=oNH z_xyr|%KCD+oIm%UQ9d`0=nS68ied%TzelmDNugq-mc;)ma5|2}A&96HS! zJSc<|P}*`iH)o1bH3u?Kdt1~bY7XU8MMF?kIcH}aHB&Wyn!C zToscwkz5TeaR+%P)n_ZGC@w*U>|i zUi75)?Z=EbeURnAxg(BHqM0b?(YM-n%+V2S0*=+Oj}##Bdk_^G=!dPAGJx^KIK>I& zVgV$|5*lFX9b^d&uxj@^jChz^;wt%fyl*$BQBs6gx~JAE`gAmX-EZd`c5NvVFWcU7QIpT@Huok93*Z&gsCvdv6P=ngq4 zUpy&4!sT>}5^^Hyfen;1n>apS^G!$(^B#fQ=nTGh{YGzdy6!&KVd2Hc~tb z4*Rh*%7LFJiU(Sp$3CF5d8wHN-_89L&=ZLeaZDYZMW64J(nCD+ftud*?ZHSS7AB32 z^r3AGw;pe74z@*RJU`8G0}oIbE7%Rzlx^_;=I>)`C7iQltAw-nB|;8Z@OeNBKX*Bf zM~Ss7*J5MCknz9Hg5yz~P5<&N_&;XBYk3kPuAjNZ1CqnnB1kN}@7IFgBc!?BQ$#K*du@I`T;23u==eJ1s z-#M>KxX{}r;Z2<1C*eV!|6vJV&+(vyALMwegwN%8Ov1}K-X-CSIDT5fGn_vw;q6@i zJjao>&gZWreNq2y2^aJGjf8LG{+~!V?i)Btxm>KT*x+B}xX4HBH|r#Qkx!k3i?}@! z-p#_2KS+3h^MB@dyx}~Eed>;+FXBFxa1r+fK8d2Pw|U%^97i+jK2R&^pXK_yC4E1~ ztS7Ls7&p;bQ)eNw}CF;^{ou4!bnm%{aTa3My_yf*#Z8 zF^Q)sXas_yX?X2Dk?!Dc%s^n}?3&a7EnOLns*H`>|gN=t7}otOgo=%Jwe$Rc=w_ zq~wlN0*;uqXHZqx7a(I9;(Qbk?x(U(l&$9R4@iz>-Ho7|ZT>p=L2`^2hVzGOB+uXL zfXO}qB1!%*eSwT+$htoUnT({K^ + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + + +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include +#include +#include +#include +#ifdef HAVE_LIBBZ2 +#include +#endif +#include "xar.h" +#include "filetree.h" +#include "io.h" + +#ifdef HAVE_LIBBZ2 + +struct _bzip_context{ + uint8_t bzipcompressed; + bz_stream bz; +}; + + +#define BZIP2_CONTEXT(x) ((struct _bzip_context *)(*x)) +#endif + +int xar_bzip_fromheap_done(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +int xar_bzip_fromheap_in(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context) { +#ifdef HAVE_LIBBZ2 + const char *opt; + void *out = NULL; + size_t outlen, offset = 0; + int r; + xar_prop_t tmpp; + + /* on first run, we init the context and check the compression type */ + if( !BZIP2_CONTEXT(context) ) { + *context = calloc(1,sizeof(struct _bzip_context)); + + opt = NULL; + tmpp = xar_prop_pget(p, "encoding"); + if( tmpp ) + opt = xar_attr_pget(f, tmpp, "style"); + if( !opt ) return 0; + if( strcmp(opt, "application/x-bzip2") != 0 ) return 0; + + BZ2_bzDecompressInit(&BZIP2_CONTEXT(context)->bz, 0, 0); + BZIP2_CONTEXT(context)->bzipcompressed = 1; + if( *inlen == 0 ) + return 0; + }else if( !(BZIP2_CONTEXT(context)->bzipcompressed) ){ + /* once the context has been initialized, then we have already + checked the compression type, so we need only check if we + actually are compressed */ + return 0; + } + + outlen = *inlen; + + BZIP2_CONTEXT(context)->bz.next_in = *in; + BZIP2_CONTEXT(context)->bz.avail_in = *inlen; + BZIP2_CONTEXT(context)->bz.next_out = out; + BZIP2_CONTEXT(context)->bz.avail_out = 0; + + while( BZIP2_CONTEXT(context)->bz.avail_in != 0 ) { + outlen = outlen * 2; + out = realloc(out, outlen); + if( out == NULL ) abort(); + + BZIP2_CONTEXT(context)->bz.next_out = out + offset; + BZIP2_CONTEXT(context)->bz.avail_out = outlen - offset; + + r = BZ2_bzDecompress(&BZIP2_CONTEXT(context)->bz); + if( (r != BZ_OK) && (r != BZ_STREAM_END) ) { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Error decompressing file"); + xar_err_callback(x, XAR_SEVERITY_FATAL, XAR_ERR_ARCHIVE_EXTRACTION); + return -1; + } + offset += outlen - offset - BZIP2_CONTEXT(context)->bz.avail_out; + if( (r == BZ_STREAM_END) && (offset == 0) ) + break; + } + + free(*in); + *in = out; + *inlen = offset; +#endif /* HAVE_LIBBZ2 */ + return 0; +} + +int xar_bzip_fromheap_done(xar_t x, xar_file_t f, xar_prop_t p, void **context) { +#ifdef HAVE_LIBBZ2 + + if( !context || !BZIP2_CONTEXT(context) ) + return 0; + + if( BZIP2_CONTEXT(context)->bzipcompressed){ + BZ2_bzDecompressEnd(&BZIP2_CONTEXT(context)->bz); + } + + free(BZIP2_CONTEXT(context)); + *context = NULL; + +#endif /* HAVE_LIBBZ2 */ + return 0; +} + +int xar_bzip_toheap_done(xar_t x, xar_file_t f, xar_prop_t p, void **context) { +#ifdef HAVE_LIBBZ2 + xar_prop_t tmpp; + + if( BZIP2_CONTEXT(context)->bzipcompressed){ + BZ2_bzCompressEnd(&BZIP2_CONTEXT(context)->bz); + + tmpp = xar_prop_pset(f, p, "encoding", NULL); + if( tmpp ) + xar_attr_pset(f, tmpp, "style", "application/x-bzip2"); + } + + free(BZIP2_CONTEXT(context)); + *context = NULL; + +#endif /* HAVE_LIBBZ2 */ + return 0; +} + +int32_t xar_bzip_toheap_in(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context) { +#ifdef HAVE_LIBBZ2 + void *out = NULL; + size_t outlen, offset = 0; + int r; + const char *opt; + + /* on first run, we init the context and check the compression type */ + if( !BZIP2_CONTEXT(context) ) { + *context = calloc(1,sizeof(struct _bzip_context)); + + opt = xar_opt_get(x, XAR_OPT_COMPRESSION); + if( !opt ) + return 0; + + if( strcmp(opt, XAR_OPT_VAL_BZIP) != 0 ) + return 0; + + BZ2_bzCompressInit(&BZIP2_CONTEXT(context)->bz, 9, 0, 30); + BZIP2_CONTEXT(context)->bzipcompressed = 1; + }else if( !BZIP2_CONTEXT(context)->bzipcompressed ){ + /* once the context has been initialized, then we have already + checked the compression type, so we need only check if we + actually are compressed */ + return 0; + } + + outlen = *inlen/2; + if(outlen == 0) outlen = 1024; + BZIP2_CONTEXT(context)->bz.next_in = *in; + BZIP2_CONTEXT(context)->bz.avail_in = *inlen; + BZIP2_CONTEXT(context)->bz.next_out = out; + BZIP2_CONTEXT(context)->bz.avail_out = 0; + + do { + outlen *= 2; + out = realloc(out, outlen); + if( out == NULL ) abort(); + + BZIP2_CONTEXT(context)->bz.next_out = out + offset; + BZIP2_CONTEXT(context)->bz.avail_out = outlen - offset; + + if( (*inlen == 0) ) + r = BZ2_bzCompress(&BZIP2_CONTEXT(context)->bz, BZ_FINISH); + else + r = BZ2_bzCompress(&BZIP2_CONTEXT(context)->bz, BZ_RUN); + offset = outlen - BZIP2_CONTEXT(context)->bz.avail_out; + } while( BZIP2_CONTEXT(context)->bz.avail_in != 0 ); + + free(*in); + *in = out; + *inlen = offset; +#endif /* HAVE_LIBBZ2 */ + return 0; +} diff --git a/setup/xar-1.5.2/lib/bzxar.d b/setup/xar-1.5.2/lib/bzxar.d new file mode 100644 index 0000000..04a32c4 --- /dev/null +++ b/setup/xar-1.5.2/lib/bzxar.d @@ -0,0 +1,22 @@ +lib/bzxar.o : lib/bzxar.c include/config.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/io.h diff --git a/setup/xar-1.5.2/lib/bzxar.h b/setup/xar-1.5.2/lib/bzxar.h new file mode 100644 index 0000000..e2940d8 --- /dev/null +++ b/setup/xar-1.5.2/lib/bzxar.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_BZLIB_H_ +#define _XAR_BZLIB_H_ + +int xar_bzip_fromheap_in(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +int xar_bzip_fromheap_done(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +int32_t xar_bzip_toheap_in(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +int xar_bzip_toheap_done(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +#endif /* _XAR_BZLIB_H_ */ diff --git a/setup/xar-1.5.2/lib/bzxar.o b/setup/xar-1.5.2/lib/bzxar.o new file mode 100644 index 0000000000000000000000000000000000000000..fa58b5975c49a977c8626320c5a7955a98e23833 GIT binary patch literal 6104 zcmbtYZ){sv6~E6fvAuY4-KIdQB4ik_4(ewoO+wnHoj0#*(zRWf$XLfV_u0O&O`K=z zz2}m2W8_1a6lov|L<2D-BtXgsr17Cb2qrPuKoftY?F%YGNRwEl!WW9P50w}i=iGa) z^K#;T8CUYV=lssOzjN++_uY4&zjEsAgE7kzrdi^o*wzdx#OTPjTvTFFjEIa_nBBNO zyYb~)vm4!;vl|OHW;f2gb#~*_wX+-N-uOBCJ^5-sm-lC4#P8Tb45(a^D&;$s9JxFb zkz**wu1&+$P9{*Xt)%K=S{ooRuE9a<1_lP3UI+t}M&kyPwxyin$>+c)u?iRRP(ke1 zDhg423K{qehE?L=1HS+Kk1+~bei-FxEzhG|9Fi{ZeD(r_n$`FtKLUJSBwm3|XZheo2p&%^ z!8HY-NGvM-OCZ`ARdYM3IyHxEynx9LEy-08A6vr#ns^-Lq{{mUiWv=0p!X>7{|@@Z zI$RXZY^C76|2ZfzJmO7rAgMG^WxJac=f*l@U5@CG}?g12T zD0b+T_@uxtIbzxAR0_vhpx!auBbo;9AyAW=7uD1VSZ5BvDsZfO59o+@ADA1#G>W4y z+gWYBeh&-wpgc2>E)onqQfoDo;)1T1~IJlB;{&{A9lARa@Pf)PAJw_6t^n9Uj6A z6P3#=uJ2R@#0$b&O)feOOg~)h$N)rGM*ze22{LRI=-Uvmk1jS_GW4Yc4Ms{=_fUB~ zb(oF)8)4ZelRvpou+zyIxMtLK5|CI7W(ic~%H?LKyy&-=8`ABR;c>!=nv8_4iY|y#6ChOEUWlVHSy3*dRl4Zl11&MXEUH*Dz07!*SVTBV6c zYpQ3C<$<&@Gj*qlP2Dt|qd0wjAzK<7%T78IP9Zy97@I0g6^>?e%VF1(C+gCZezOXy z>sK2mVEN~!CbGGDHn%uGSAuI0y49r|Kl!iPefE|rdD4=q%>Uf9(! za#LNUjXgUy$qK-~|aCLm>gRA#*AAEQhhJY>93vrjt)^ElgI7ZwTse`I5U>_me z=;oz7N%%?Vu^Idf$jEa+q1!LV-Y(i(>d{SYH>jR~9vpovI0$W;7DAz<9-%0-y!+%Bme_{A*q+e(F?@51`;V%)7{u0|>KVKkxKlP?Q?~$Hm z_%Dg~FvAZK{s6;cq(92=&yjzf;ZM*aU1j)hNnd05o5b@~hX0N9?=u`f5wKllxXJ&I z4F8^X7jHA%@Z4m$soT2@H+4(W{7juq-2DtU_czP%CCcY8!_9qvnBnu3$KwqD7~x9{ z?-2hbh7&B-2*=?hD%0!C{|xc}nc-C;y3X(;g#U|h!*BNQPubeR)Xnf5W%xfSZi#Ti zWA^)JnZM!r8pB^Co);L8c|ZJ>`J4IvgW*-0S9G6;Lw2uaNHTdE!yC83vxH-rs8k9m zGW;&mFEZTJVU6KtUcw1hmqWJ#edz1HVI+0pc4}_u3a1hT!trIxb!xKGt-}d_u`Nh; zD-~Z}+F^Em*Q?8&L*QFSnjsKEIMw#@GMsLO?JYX0-JnH^=MD73T(Q9yvT7&b$~n<+6`i4(_ng*t`_6-*-}vV#Zov$s zp8Gxoc)$E#rvs81k1C#4dHyxPI43~jWr}|bl}O{hWw7;&e~aRqI-!c^C?3B97;>6C zK~(K3ElB)tE80wa(?1Qye&hAOZ9?EVH`>fN)31Zk$Wgy@m~5ZMeZLDnh_N)qJdOVj z<1q6#@V7zeSHH|Y?QxMDv3~e9V8%!5%9gkq(V_7_r17TX`S;5meQ%ijX#mpUR|=1h RZvEn~(ev{p*rScd{~xh*p7{U( literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/bzxar.static.d b/setup/xar-1.5.2/lib/bzxar.static.d new file mode 100644 index 0000000..0dc4d8d --- /dev/null +++ b/setup/xar-1.5.2/lib/bzxar.static.d @@ -0,0 +1,22 @@ +bzxar.o: lib/bzxar.c include/config.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/io.h diff --git a/setup/xar-1.5.2/lib/bzxar.static.o b/setup/xar-1.5.2/lib/bzxar.static.o new file mode 100644 index 0000000000000000000000000000000000000000..a873c37cd0c505320a97d1fea5e3092a1eb181ee GIT binary patch literal 6096 zcmbtYZ)_Y_5r2DY-)-&QDY3wvfO@u>JXfAtq>$}6} zz0>YqutO=9FqJH|h(O&I2_&Spl0Q@`AA*EXKLmfE}zWAh(9ug7?8DCvgG@v9JxFj zkz**wZcf3~v=XS8h9#$%(gp~OD{v5}fq}t>7eav4C~nX)4e1oOo(G@A3S7uTCNY0o zmWbq&$iSB{trQ0z`xS_BYYr-w>7R<9Lis*GMSP}+PD-A=fi6luy$W!8$O}aL2^9Az z_zcP!C7;DI4k-B?=Ey7gNtCCQJcn{&$aR3{%NHTljKa^q4)~l%+<-|{`S@i>9=8_Z zIt-vlEJ*#EAew2}bJLQOTtgpp~HTEXM!y$ASz2XkT# zE|O*@K85R7G>6fjXpW#vtvHG<#B&T~>cw%CsTb48PrW!1=|ur~reryfpjdzsW+5!` zd+>)DmRv*{DJBwCnB&$r;3|6%x3b_NA2Op@MsFJXX*PcH0r)1Dg;AVG!fW;90?2QH zId<)GvJLV%aEM)dD%tQrX-lWM6owncmNdmCV+~O6OLmE-z7g8|#7~d<1_n@eW)K!fMrBu=DOQG=G zpb3NB@R6uq7O8q$8=~`E3Z_G2ST?j0@2FayTq8y`ye8C*HPZ6h4lE=r z0gvxgLbob%_12P`D|>D&S8P??+{vYO!*_FIcD_`0LnjxwVW*t~hU}<4VUI~Jc~ird zzNHI6+X?F`GbY7Ufl{eS+iwQ863WKPqHOYRs~RIK>A4%~ZiPaeDi)7q4$PN3Uf5AR z&rWuvHu~J?q@5qP#~)_*LWte)+~P2@;PTke2bbUFK6r8)hJY#Lhj5$CRA0m%95e2U^g;F(u+I{% zb^S4(Abc8T92!3jGV)xM=+;NEyL)z@)aYim9h47n7p8ZlF9>@f4Bg?Oh>W;CBO{J$ zyn`T&ooW&q{}kzZ*7zIrXuvm64ph4vH^>hwSn@=_Vs-?_yq_ceD8pYS{ZWR0i}YEB z|AO>6h8L*LuQGgyioL|})1)^U{vq)M3~v&y-#y)*vxI-2`F9Ba5yPv5|BT@$sLnSS z{xs=7XZS7Bf6ef9(*MZtyOj5D4F419noqCmuY`Zh{BIMF`UM6DCa~lEeTnehG;4f{ z)|FxSyTp5t;RgtRjN#`=zrgUXkbjNg7bx!v!~aA2D#QOlJl|vZ1H|)FhT~5I9M>7H z>;D78H|w4#RcdK4!S?n?-f$KI^=@8LsbdhT)4;&q0Rk`~D=u*Qt)D8U8iG z7a86r{woY8SgaC`;Ur4ayUhQ)#QztDSBU5q!w(VuA>o=|@84fEm4oh^<~hvp{S;p$ zT=VGt{yFBad0u4rpQ-*=7?1uw{GIvh_5PFL6J2P;dVQ-(S8)m+z-JZaliCv=2e4gz8OZqu==Zn;x~ll?+V zknEJpzI&y|?D&pXb9+PJH;$`AAce3it)(S6oC@26gRl*!X*dYO!I+5LI{c1smRu_Q z|D5oSN{zx7>15V6;G?Y{wiRc6Cm+6<-dzcWN_aS*!tzaL-}=|P{r>o&))_N zIdz>N%5j|@$V<_e8!S4%p7EU3FMby$gMsJV=+JR`UIU|+qkg9-K8m5teSb_CE0g|H zDa5OcK(AlJFM-gnf7UMLahV*kfB0)a$4C3h9&s5_r})<>UQfJ!)Oqdb`#!DzRSG~l W{FTD + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#include "config.h" +#include +#include +#include +#include +#include +#include +#include +#include "xar.h" +#include "arcmod.h" +#include "b64.h" +#include +#include +#include "util.h" +#include "linuxattr.h" +#include "io.h" +#include "appledouble.h" +#include "stat.h" +#include "archive.h" + +#if defined(HAVE_SYS_XATTR_H) +#include +#endif + +struct _darwinattr_context{ + int fd; + char *finfo; + char *buf; + int len; + int off; +}; + +#define DARWINATTR_CONTEXT(x) ((struct _darwinattr_context *)(x)) +#if defined(__APPLE__) +#ifdef HAVE_GETATTRLIST +#include +#include +struct fi { + uint32_t length; + fsobj_type_t objtype; + char finderinfo[32]; +}; + +/* finfo_read + * This is for archiving the finderinfo via the getattrlist method. + * This function is used from the nonea_archive() function. + */ +static int32_t finfo_read(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + if( len < 32 ) + return -1; + + if( DARWINATTR_CONTEXT(context)->finfo == NULL ) + return 0; + + memcpy(buf, DARWINATTR_CONTEXT(context)->finfo, 32); + DARWINATTR_CONTEXT(context)->finfo = NULL; + return 32; +} + +/* finfo_write + * This is for extracting the finderinfo via the setattrlist method. + * This function is used from the nonea_extract() function. + */ +static int32_t finfo_write(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + struct attrlist attrs; + struct fi finfo; + + if( len < 32 ) + return -1; + if( DARWINATTR_CONTEXT(context)->finfo == NULL ) + return 0; + + memset(&attrs, 0, sizeof(attrs)); + attrs.bitmapcount = ATTR_BIT_MAP_COUNT; + attrs.commonattr = ATTR_CMN_OBJTYPE | ATTR_CMN_FNDRINFO; + + getattrlist(DARWINATTR_CONTEXT(context)->finfo, &attrs, &finfo, sizeof(finfo), 0); + + attrs.commonattr = ATTR_CMN_FNDRINFO; + if( setattrlist(DARWINATTR_CONTEXT(context)->finfo, &attrs, buf, 32, 0) != 0 ) + return -1; + + DARWINATTR_CONTEXT(context)->finfo = NULL; + return 32; +} +#endif /* HAVE_GETATTRLIST */ + +/* xar_rsrc_read + * This is the read callback function for archiving the resource fork via + * the ..namedfork method. This callback is used from nonea_archive() + */ +static int32_t xar_rsrc_read(xar_t x, xar_file_t f, void *inbuf, size_t bsize, void *context) { + int32_t r; + + while(1) { + r = read(DARWINATTR_CONTEXT(context)->fd, inbuf, bsize); + if( (r < 0) && (errno == EINTR) ) + continue; + return r; + } +} +#endif /* __APPLE__ */ + +/* xar_rsrc_write + * This is the write callback function for writing the resource fork + * back to the file via ..namedfork method. This is the callback used + * in nonea_extract() and underbar_extract(). + */ +static int32_t xar_rsrc_write(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + int32_t r; + size_t off = 0; + do { + r = write(DARWINATTR_CONTEXT(context)->fd, buf+off, len-off); + if( (r < 0) && (errno != EINTR) ) + return r; + off += r; + } while( off < len ); + return off; +} + +#ifdef __APPLE__ +#if defined(HAVE_GETXATTR) + +static int32_t xar_ea_read(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + if( DARWINATTR_CONTEXT(context)->buf == NULL ) + return 0; + + if( ((DARWINATTR_CONTEXT(context)->len)-(DARWINATTR_CONTEXT(context)->off)) <= len ) { + int siz = (DARWINATTR_CONTEXT(context)->len)-(DARWINATTR_CONTEXT(context)->off); + memcpy(buf, DARWINATTR_CONTEXT(context)->buf+DARWINATTR_CONTEXT(context)->off, siz); + free(DARWINATTR_CONTEXT(context)->buf); + DARWINATTR_CONTEXT(context)->buf = NULL; + DARWINATTR_CONTEXT(context)->off = 0; + DARWINATTR_CONTEXT(context)->len = 0; + return siz; + } + + memcpy(buf, DARWINATTR_CONTEXT(context)->buf+DARWINATTR_CONTEXT(context)->off, len); + DARWINATTR_CONTEXT(context)->off += len; + + if( DARWINATTR_CONTEXT(context)->off == DARWINATTR_CONTEXT(context)->len ) { + free(DARWINATTR_CONTEXT(context)->buf); + DARWINATTR_CONTEXT(context)->buf = NULL; + DARWINATTR_CONTEXT(context)->off = 0; + DARWINATTR_CONTEXT(context)->len = 0; + } + + return len; +} + +static int32_t xar_ea_write(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + if( DARWINATTR_CONTEXT(context)->buf == NULL ) + return 0; + + if( DARWINATTR_CONTEXT(context)->off == DARWINATTR_CONTEXT(context)->len ) + return 0; + + if( ((DARWINATTR_CONTEXT(context)->len)-(DARWINATTR_CONTEXT(context)->off)) <= len ) { + int siz = (DARWINATTR_CONTEXT(context)->len)-(DARWINATTR_CONTEXT(context)->off); + memcpy((DARWINATTR_CONTEXT(context)->buf)+(DARWINATTR_CONTEXT(context)->off), buf, siz); + return siz; + } + + memcpy((DARWINATTR_CONTEXT(context)->buf)+(DARWINATTR_CONTEXT(context)->off), buf, len); + DARWINATTR_CONTEXT(context)->off += len; + + return len; +} + +static int32_t ea_archive(xar_t x, xar_file_t f, const char* file, void *context) { + char *buf, *i; + int ret, bufsz, attrsz; + int32_t retval = 0; + + if( file == NULL ) + return 0; + + ret = listxattr(file, NULL, 0, XATTR_NOFOLLOW); + if( ret < 0 ) + return -1; + if( ret == 0 ) + return 0; + bufsz = ret; + +TRYAGAIN: + buf = malloc(bufsz); + if( !buf ) + goto TRYAGAIN; + ret = listxattr(file, buf, bufsz, XATTR_NOFOLLOW); + if( ret < 0 ) { + switch(errno) { + case ERANGE: bufsz = bufsz*2; free(buf); goto TRYAGAIN; + case ENOTSUP: retval = 0; goto BAIL; + default: retval = -1; goto BAIL; + }; + } + if( ret == 0 ) { + retval = 0; + goto BAIL; + } + + attrsz = ret; + for( i = buf; (i-buf) < attrsz; i += strlen(i)+1 ) { + xar_ea_t e; + + ret = getxattr(file, i, NULL, 0, 0, XATTR_NOFOLLOW); + if( ret < 0 ) + continue; + DARWINATTR_CONTEXT(context)->len = ret; + DARWINATTR_CONTEXT(context)->buf = malloc(DARWINATTR_CONTEXT(context)->len); + if( !DARWINATTR_CONTEXT(context)->buf ) + goto BAIL; + + ret = getxattr(file, i, DARWINATTR_CONTEXT(context)->buf, DARWINATTR_CONTEXT(context)->len, 0, XATTR_NOFOLLOW); + if( ret < 0 ) { + free(DARWINATTR_CONTEXT(context)->buf); + DARWINATTR_CONTEXT(context)->buf = NULL; + DARWINATTR_CONTEXT(context)->len = 0; + continue; + } + + e = xar_ea_new(f, i); + xar_attrcopy_to_heap(x, f, xar_ea_root(e), xar_ea_read, context); + } +BAIL: + free(buf); + return retval; +} + +static int32_t ea_extract(xar_t x, xar_file_t f, const char* file, void *context) { + xar_prop_t p; + + for(p = xar_prop_pfirst(f); p; p = xar_prop_pnext(p)) { + const char *opt; + const char *name = NULL; + int len; + xar_prop_t tmpp; + + name = xar_prop_getkey(p); + if( strncmp(name, XAR_EA_FORK, strlen(XAR_EA_FORK)) ) + continue; + if( strlen(name) != strlen(XAR_EA_FORK) ) + continue; + + opt = NULL; + tmpp = xar_prop_pget(p, "size"); + if( tmpp ) + opt = xar_prop_getvalue(tmpp); + if( !opt ) + continue; + + len = strtol(opt, NULL, 10); + DARWINATTR_CONTEXT(context)->buf = malloc(len); + if( !DARWINATTR_CONTEXT(context)->buf ) + return -1; + DARWINATTR_CONTEXT(context)->len = len; + + xar_attrcopy_from_heap(x, f, p, xar_ea_write, context); + + name = NULL; + tmpp = xar_prop_pget(p, "name"); + if( tmpp ) + name = xar_prop_getvalue(tmpp); + if( !name ) + continue; + + setxattr(file, name, DARWINATTR_CONTEXT(context)->buf, DARWINATTR_CONTEXT(context)->len, 0, XATTR_NOFOLLOW); + free(DARWINATTR_CONTEXT(context)->buf); + DARWINATTR_CONTEXT(context)->buf = NULL; + DARWINATTR_CONTEXT(context)->len = 0; + DARWINATTR_CONTEXT(context)->off = 0; + } + + return 0; +} +#endif /* HAVE_GETXATTR */ + +/* nonea_archive + * Archive the finderinfo and resource fork through getattrlist and + * ..namedfork methods rather than via EAs. This is mainly for 10.3 + * and earlier support + */ +static int32_t nonea_archive(xar_t x, xar_file_t f, const char* file, void *context) { + char rsrcname[4096]; + struct stat sb; + xar_ea_t e; +#ifdef HAVE_GETATTRLIST + struct attrlist attrs; + struct fi finfo; + int ret; + char z[32]; + + memset(&attrs, 0, sizeof(attrs)); + attrs.bitmapcount = ATTR_BIT_MAP_COUNT; + attrs.commonattr = ATTR_CMN_OBJTYPE | ATTR_CMN_FNDRINFO; + + ret = getattrlist(file, &attrs, &finfo, sizeof(finfo), 0); + if( ret != 0 ) + return -1; + + memset(z, 0, sizeof(z)); + if( memcmp(finfo.finderinfo, z, sizeof(finfo.finderinfo)) != 0 ) { + e = xar_ea_new(f, "com.apple.FinderInfo"); + DARWINATTR_CONTEXT(context)->finfo = finfo.finderinfo; + xar_attrcopy_to_heap(x, f, xar_ea_root(e), finfo_read, context); + } + + +#endif /* HAVE_GETATTRLIST */ + + + memset(rsrcname, 0, sizeof(rsrcname)); + snprintf(rsrcname, sizeof(rsrcname)-1, "%s/..namedfork/rsrc", file); + if( lstat(rsrcname, &sb) != 0 ) + return 0; + + if( sb.st_size == 0 ) + return 0; + + DARWINATTR_CONTEXT(context)->fd = open(rsrcname, O_RDONLY, 0); + if( DARWINATTR_CONTEXT(context)->fd < 0 ) + return -1; + + e = xar_ea_new(f, "com.apple.ResourceFork"); + xar_attrcopy_to_heap(x, f, xar_ea_root(e), xar_rsrc_read, context); + close(DARWINATTR_CONTEXT(context)->fd); + return 0; +} + +/* nonea_extract + * Extract the finderinfo and resource fork through setattrlist and + * ..namedfork methods rather than via EAs. This is mainly for 10.3 + * and earlier support + */ +static int32_t nonea_extract(xar_t x, xar_file_t f, const char* file, void *context) { + char rsrcname[4096]; + xar_prop_t p; +#ifdef HAVE_SETATTRLIST + struct attrlist attrs; + struct fi finfo; + int ret; + + memset(&attrs, 0, sizeof(attrs)); + attrs.bitmapcount = ATTR_BIT_MAP_COUNT; + attrs.commonattr = ATTR_CMN_OBJTYPE | ATTR_CMN_FNDRINFO; + + ret = getattrlist(file, &attrs, &finfo, sizeof(finfo), 0); + if( ret != 0 ) + return -1; + + DARWINATTR_CONTEXT(context)->finfo = (char *)file; + + p = xar_ea_find(f, "com.apple.ResourceFork"); + if( p ) + xar_attrcopy_from_heap(x, f, p, finfo_write, context); +#endif /* HAVE_SETATTRLIST */ + + memset(rsrcname, 0, sizeof(rsrcname)); + snprintf(rsrcname, sizeof(rsrcname)-1, "%s/..namedfork/rsrc", file); + DARWINATTR_CONTEXT(context)->fd = open(rsrcname, O_RDWR|O_TRUNC); + if( DARWINATTR_CONTEXT(context)->fd < 0 ) + return 0; + + p = xar_ea_find(f, "com.apple.ResourceFork"); + if( p ) + xar_attrcopy_from_heap(x, f, p, xar_rsrc_write, context); + close(DARWINATTR_CONTEXT(context)->fd); + return 0; +} +#endif /* __APPLE__ */ + +/* xar_underbar_check + * Check to see if the file we're archiving is a ._ file. If so, + * stop the archival process. + */ +xar_file_t xar_underbar_check(xar_t x, xar_file_t f, const char* file, void *context) { + char *bname, *tmp; + + tmp = strdup(file); + bname = basename(tmp); + + if(bname && (bname[0] == '.') && (bname[1] == '_')) { + char *nonunderbar, *nupath, *tmp2, *dname; + struct stat sb; + + nonunderbar = bname+2; + tmp2 = strdup(file); + dname = dirname(tmp2); + asprintf(&nupath, "%s/%s", dname, nonunderbar); + free(tmp2); + + /* if there is no file that the ._ corresponds to, archive + * it like a normal file. + */ + if( stat(nupath, &sb) ) { + free(tmp); + free(nupath); + return NULL; + } + + asprintf(&tmp2, "%s/..namedfork/rsrc", nupath); + + /* If there is a file that the ._ file corresponds to, and + * there is no resource fork, assume the ._ file contains + * the file's resource fork, and skip it (to be picked up + * when the file is archived. + */ + if( stat(tmp2, &sb) ) { + xar_file_t tmpf; + tmpf = xar_file_find(XAR(x)->files, nupath); + if( !tmpf ) { + tmpf = xar_add(x, nupath); + } + free(nupath); + free(tmp2); + free(tmp); + return tmpf; + } + + /* otherwise, we have a corresponding file and it supports + * resource forks, so we assume this is a detached ._ file + * and archive it as a real file. + */ + free(nupath); + free(tmp2); + free(tmp); + return NULL; + } + + free(tmp); + return NULL; +} + +#ifdef __APPLE__ +/* This only really makes sense on OSX */ +static int32_t underbar_archive(xar_t x, xar_file_t f, const char* file, void *context) { + struct stat sb; + char underbarname[4096], z[32]; + char *dname, *bname, *tmp, *tmp2; + struct AppleSingleHeader ash; + struct AppleSingleEntry ase; + int num_entries = 0, i, r; + off_t off; + + if( !file ) + return 0; + + tmp = strdup(file); + tmp2 = strdup(file); + dname = dirname(tmp2); + bname = basename(tmp); + + memset(underbarname, 0, sizeof(underbarname)); + snprintf(underbarname, sizeof(underbarname)-1, "%s/._%s", dname, bname); + free(tmp); + free(tmp2); + + if( stat(underbarname, &sb) != 0 ) + return 0; + + DARWINATTR_CONTEXT(context)->fd = open(underbarname, O_RDONLY); + if( DARWINATTR_CONTEXT(context)->fd < 0 ) + return -1; + + memset(&ash, 0, sizeof(ash)); + memset(&ase, 0, sizeof(ase)); + r = read(DARWINATTR_CONTEXT(context)->fd, &ash, XAR_ASH_SIZE); + if( r < XAR_ASH_SIZE ) + return -1; + + if( ntohl(ash.magic) != APPLEDOUBLE_MAGIC ) + return -1; + if( ntohl(ash.version) != APPLEDOUBLE_VERSION ) + return -1; + + off = XAR_ASH_SIZE; + num_entries = ntohs(ash.entries); + + for(i = 0; i < num_entries; i++) { + off_t entoff; + r = read(DARWINATTR_CONTEXT(context)->fd, &ase, sizeof(ase)); + if( r < sizeof(ase) ) + return -1; + off+=r; + + if( ntohl(ase.entry_id) == AS_ID_FINDER ) { + xar_ea_t e; + entoff = (off_t)ntohl(ase.offset); + if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, SEEK_SET) == -1 ) + return -1; + r = read(DARWINATTR_CONTEXT(context)->fd, z, sizeof(z)); + if( r < sizeof(z) ) + return -1; + + DARWINATTR_CONTEXT(context)->finfo = z; + e = xar_ea_new(f, "com.apple.FinderInfo"); + xar_attrcopy_to_heap(x, f, xar_ea_root(e), finfo_read, context); + if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, SEEK_SET) == -1 ) + return -1; + } + if( ntohl(ase.entry_id) == AS_ID_RESOURCE ) { + xar_ea_t e; + entoff = (off_t)ntohl(ase.offset); + if( lseek(DARWINATTR_CONTEXT(context)->fd, entoff, SEEK_SET) == -1 ) + return -1; + + e = xar_ea_new(f, "com.apple.ResourceFork"); + xar_attrcopy_to_heap(x, f, xar_ea_root(e), xar_rsrc_read, context); + + if( lseek(DARWINATTR_CONTEXT(context)->fd, (off_t)off, SEEK_SET) == -1 ) + return -1; + } + } + + close(DARWINATTR_CONTEXT(context)->fd); + DARWINATTR_CONTEXT(context)->fd = 0; + return 0; +} +#endif + +/* underbar_extract + * Extract finderinfo and resource fork information to an appledouble + * ._ file. + */ +static int32_t underbar_extract(xar_t x, xar_file_t f, const char* file, void *context) { + char underbarname[4096]; + char *dname, *bname, *tmp, *tmp2; + const char *rsrclenstr; + struct AppleSingleHeader ash; + struct AppleSingleEntry ase; + int num_entries = 0, rsrclen = 0, have_rsrc = 0, have_fi = 0; + xar_prop_t p; + xar_prop_t rfprop = NULL, fiprop = NULL; + + fiprop = xar_ea_find(f, "com.apple.FinderInfo"); + if( fiprop ) { + have_fi = 1; + num_entries++; + } + + rfprop = xar_ea_find(f, "com.apple.ResourceFork"); + if( rfprop ) { + have_rsrc = 1; + num_entries++; + } + + if( num_entries == 0 ) + return 0; + + tmp = strdup(file); + tmp2 = strdup(file); + dname = dirname(tmp2); + bname = basename(tmp); + + memset(underbarname, 0, sizeof(underbarname)); + snprintf(underbarname, sizeof(underbarname)-1, "%s/._%s", dname, bname); + free(tmp); + free(tmp2); + + DARWINATTR_CONTEXT(context)->fd = open(underbarname, O_RDWR | O_CREAT | O_TRUNC, 0); + if( DARWINATTR_CONTEXT(context)->fd < 0 ) + return -1; + + rsrclenstr = NULL; + if( rfprop ) { + p = xar_prop_pget(rfprop, "size"); + if( p ) + rsrclenstr = xar_prop_getvalue(p); + if( rsrclenstr ) + rsrclen = strtol(rsrclenstr, NULL, 10); + } + + memset(&ash, 0, sizeof(ash)); + memset(&ase, 0, sizeof(ase)); + ash.magic = htonl(APPLEDOUBLE_MAGIC); + ash.version = htonl(APPLEDOUBLE_VERSION); + ash.entries = htons(num_entries); + + write(DARWINATTR_CONTEXT(context)->fd, &ash, XAR_ASH_SIZE); + + ase.offset = htonl(XAR_ASH_SIZE + ntohs(ash.entries)*12); + if( have_fi ) { + ase.entry_id = htonl(AS_ID_FINDER); + ase.length = htonl(32); + write(DARWINATTR_CONTEXT(context)->fd, &ase, 12); + } + + if( have_rsrc ) { + ase.entry_id = htonl(AS_ID_RESOURCE); + ase.offset = htonl(ntohl(ase.offset) + ntohl(ase.length)); + ase.length = htonl(rsrclen); + write(DARWINATTR_CONTEXT(context)->fd, &ase, 12); + } + + if( have_fi ) + xar_attrcopy_from_heap(x, f, fiprop, xar_rsrc_write, context); + if( have_rsrc ) + xar_attrcopy_from_heap(x, f, rfprop, xar_rsrc_write, context); + close(DARWINATTR_CONTEXT(context)->fd); + + DARWINATTR_CONTEXT(context)->fd = 0; + + xar_set_perm(x, f, underbarname, NULL, 0 ); + + return 0; +} + +#if defined(__APPLE__) +static int32_t stragglers_archive(xar_t x, xar_file_t f, const char* file, void *context) { +#ifdef HAVE_GETATTRLIST + struct fits { + uint32_t length; + struct timespec ts; + }; + struct fits fts; + struct attrlist attrs; + int ret; + + memset(&attrs, 0, sizeof(attrs)); + attrs.bitmapcount = ATTR_BIT_MAP_COUNT; + attrs.commonattr = ATTR_CMN_CRTIME; + ret = getattrlist(file, &attrs, &fts, sizeof(fts), 0); + if( ret == 0 ) { + xar_prop_t tmpp; + + tmpp = xar_prop_new(f, NULL); + if( tmpp ) { + char tmpc[128]; + struct tm tm; + xar_prop_setkey(tmpp, "FinderCreateTime"); + xar_prop_setvalue(tmpp, NULL); + memset(tmpc, 0, sizeof(tmpc)); + gmtime_r(&fts.ts.tv_sec, &tm); + strftime(tmpc, sizeof(tmpc), "%FT%T", &tm); + xar_prop_pset(f, tmpp, "time", tmpc); + memset(tmpc, 0, sizeof(tmpc)); + sprintf(tmpc, "%ld", fts.ts.tv_nsec); + xar_prop_pset(f, tmpp, "nanoseconds", tmpc); + } + } +#endif + return 0; +} + +static int32_t stragglers_extract(xar_t x, xar_file_t f, const char* file, void *context) { +#ifdef HAVE_GETATTRLIST + const char *tmpc = NULL; + struct tm tm; + struct timespec ts; + struct attrlist attrs; + + xar_prop_get(f, "FinderCreateTime/time", &tmpc); + if( tmpc ) { + strptime(tmpc, "%FT%T", &tm); + ts.tv_sec = timegm(&tm); + xar_prop_get(f, "FinderCreateTime/nanoseconds", &tmpc); + ts.tv_nsec = strtol(tmpc, NULL, 10); + memset(&attrs, 0, sizeof(attrs)); + attrs.bitmapcount = ATTR_BIT_MAP_COUNT; + attrs.commonattr = ATTR_CMN_CRTIME; + setattrlist(file, &attrs, &ts, sizeof(ts), 0); + } + +#endif + return 0; +} +#endif /* __APPLE__ */ + +int32_t xar_darwinattr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len) +{ + struct _darwinattr_context context; + + memset(&context,0,sizeof(struct _darwinattr_context)); + +#if defined(__APPLE__) + if( len ) + return 0; + stragglers_archive(x, f, file, (void *)&context); + +#if defined(HAVE_GETXATTR) + if( ea_archive(x, f, file, (void *)&context) == 0 ) + return 0; +#endif + if( nonea_archive(x, f, file, (void *)&context) == 0 ) + return 0; + return underbar_archive(x, f, file, (void *)&context); +#endif /* __APPLE__ */ + return 0; +} + +int32_t xar_darwinattr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len) +{ + struct _darwinattr_context context; + + memset(&context,0,sizeof(struct _darwinattr_context)); + +#if defined(__APPLE__) + if( len ) + return 0; + stragglers_extract(x, f, file, (void *)&context); + +#if defined(HAVE_GETXATTR) + if( ea_extract(x, f, file, (void *)&context) == 0 ) + return 0; +#endif + if( nonea_extract(x, f, file, (void *)&context) == 0 ) + return 0; +#endif /* __APPLE__ */ + return underbar_extract(x, f, file, (void *)&context); +} diff --git a/setup/xar-1.5.2/lib/darwinattr.d b/setup/xar-1.5.2/lib/darwinattr.d new file mode 100644 index 0000000..13c8150 --- /dev/null +++ b/setup/xar-1.5.2/lib/darwinattr.d @@ -0,0 +1,23 @@ +lib/darwinattr.o : lib/darwinattr.c include/config.h include/xar.h \ + lib/arcmod.h lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/b64.h lib/util.h \ + lib/linuxattr.h lib/io.h lib/appledouble.h lib/stat.h lib/archive.h diff --git a/setup/xar-1.5.2/lib/darwinattr.h b/setup/xar-1.5.2/lib/darwinattr.h new file mode 100644 index 0000000..5cb45c1 --- /dev/null +++ b/setup/xar-1.5.2/lib/darwinattr.h @@ -0,0 +1,43 @@ +/* + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. +*/ +/* + * Rob Braun + * 23-Apr-2005 + * Copyright (c) 2004 Rob Braun. All rights reserved. + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_DARWINATTR_H_ +#define _XAR_DARWINATTR_H_ +xar_file_t xar_underbar_check(xar_t x, xar_file_t f, const char* file); +int32_t xar_darwinattr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len); +int32_t xar_darwinattr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len); +#endif /* _XAR_DARWINATTR_H_ */ diff --git a/setup/xar-1.5.2/lib/darwinattr.o b/setup/xar-1.5.2/lib/darwinattr.o new file mode 100644 index 0000000000000000000000000000000000000000..568f34e19c9d1916042fc8b92277c41577ada906 GIT binary patch literal 22408 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 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/darwinattr.static.d b/setup/xar-1.5.2/lib/darwinattr.static.d new file mode 100644 index 0000000..32d0c3e --- /dev/null +++ b/setup/xar-1.5.2/lib/darwinattr.static.d @@ -0,0 +1,23 @@ +darwinattr.o: lib/darwinattr.c include/config.h include/xar.h \ + lib/arcmod.h lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/b64.h lib/util.h \ + lib/linuxattr.h lib/io.h lib/appledouble.h lib/stat.h lib/archive.h diff --git a/setup/xar-1.5.2/lib/darwinattr.static.o b/setup/xar-1.5.2/lib/darwinattr.static.o new file mode 100644 index 0000000000000000000000000000000000000000..9601efb5ddd2081c534965f852fc7412db5b60bf GIT binary patch literal 22392 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 eG^(d@DE#JTto}JXWA(qNk*$ +*/ + +#define _FILE_OFFSET_BITS 64 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "xar.h" +#include "filetree.h" +#include "archive.h" +#include "io.h" + +#ifndef O_EXLOCK +#define O_EXLOCK 0 +#endif + +struct _data_context{ + int fd; + void *buffer; + size_t length; + off_t offset; + off_t total; +}; + +#define DATA_CONTEXT(x) ((struct _data_context*)(x)) + +int32_t xar_data_read(xar_t x, xar_file_t f, void *inbuf, size_t bsize, void *context) { + int32_t r; + + /* read from buffer, rather then fd,if available */ + if(DATA_CONTEXT(context)->length){ + char *readbuf = (char *)DATA_CONTEXT(context)->buffer; + size_t sizetoread = DATA_CONTEXT(context)->length - DATA_CONTEXT(context)->offset; + + if( !sizetoread){ + return 0; + } + + if( sizetoread > bsize ){ + sizetoread = bsize; + } + + /* dont read passed the end of the buffer */ + if((DATA_CONTEXT(context)->offset + sizetoread) > DATA_CONTEXT(context)->length){ + return -1; + } + + readbuf += DATA_CONTEXT(context)->offset; + memcpy(inbuf,readbuf,sizetoread); + + DATA_CONTEXT(context)->total += sizetoread; + DATA_CONTEXT(context)->offset += sizetoread; + + return sizetoread; + } + + while(1) { + r = read(DATA_CONTEXT(context)->fd, inbuf, bsize); + if( (r < 0) && (errno == EINTR) ) + continue; + DATA_CONTEXT(context)->total += r; + return r; + } + +} + +int32_t xar_data_write(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + int32_t r; + size_t off = 0; + + /* read from buffer, rather then fd,if available */ + if(DATA_CONTEXT(context)->length){ + char *writebuf = (char *)DATA_CONTEXT(context)->buffer; + + /* dont write passed the end of the buffer */ + if((DATA_CONTEXT(context)->offset + len) > DATA_CONTEXT(context)->length){ + return -1; + } + + writebuf += DATA_CONTEXT(context)->offset; + memcpy(writebuf,buf,len); + + DATA_CONTEXT(context)->offset += len; + + return len; + } + + do { + r = write(DATA_CONTEXT(context)->fd, buf+off, len-off); + if( (r < 0) && (errno != EINTR) ) + return r; + off += r; + } while( off < len ); + return off; +} + +/* xar_data_archive + * This is the arcmod archival entry point for archiving the file's + * data into the heap file. + */ +int32_t xar_data_archive(xar_t x, xar_file_t f, const char *file, const char *buffer, size_t len) { + const char *opt; + int32_t retval = 0; + struct _data_context context; + xar_prop_t tmpp; + + memset(&context,0,sizeof(struct _data_context)); + + xar_prop_get(f, "type", &opt); + if(!opt) return 0; + if( strcmp(opt, "file") != 0 ) { + if( strcmp(opt, "hardlink") == 0 ) { + opt = xar_attr_get(f, "type", "link"); + if( !opt ) + return 0; + if( strcmp(opt, "original") != 0 ) + return 0; + /* else, we're an original hardlink, so keep going */ + } else + return 0; + } + + if( 0 == len ){ + context.fd = open(file, O_RDONLY); + if( context.fd < 0 ) { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "io: Could not open file"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_CREATION); + return -1; + } + }else{ + context.buffer = (void *)buffer; + context.length = len; + context.offset = 0; + } + +#ifdef F_NOCACHE + fcntl(context.fd, F_NOCACHE, 1); +#endif + + tmpp = xar_prop_pset(f, NULL, "data", NULL); + retval = xar_attrcopy_to_heap(x, f, tmpp, xar_data_read,(void *)(&context)); + if( context.total == 0 ) + xar_prop_unset(f, "data"); + + if(context.fd > 0){ + close(context.fd); + context.fd = -1; + } + + return retval; +} + +int32_t xar_data_extract(xar_t x, xar_file_t f, const char *file, char *buffer, size_t len) { + const char *opt; + int32_t retval = 0; + struct _data_context context; + xar_prop_t tmpp; + + memset(&context,0,sizeof(struct _data_context)); + + /* Only regular files are copied in and out of the heap here */ + xar_prop_get(f, "type", &opt); + if( !opt ) return 0; + if( strcmp(opt, "file") != 0 ) { + if( strcmp(opt, "hardlink") == 0 ) { + opt = xar_attr_get(f, "type", "link"); + if( !opt ) + return 0; + if( strcmp(opt, "original") != 0 ) + return 0; + /* else, we're an original hardlink, so keep going */ + } else + return 0; + } + + if ( len ){ + context.length = len; + context.buffer = buffer; + context.offset = 0; + }else{ + /* mode 600 since other modules may need to operate on the file + * prior to the real permissions being set. + */ + context.fd = open(file, O_RDWR|O_TRUNC|O_EXLOCK, 0600); + if( context.fd < 0 ) { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "io: Could not create file"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + return -1; + } + + } + + tmpp = xar_prop_pfirst(f); + if( tmpp ) + tmpp = xar_prop_find(tmpp, "data"); + if( !tmpp ) + return 0; + retval = xar_attrcopy_from_heap(x, f, tmpp, xar_data_write, (void *)(&context)); + + if( context.fd > 0 ){ + close(context.fd); + context.fd = -1; + } + + return retval; +} + +int32_t xar_data_verify(xar_t x, xar_file_t f) +{ + const char *opt; + struct _data_context context; + xar_prop_t tmpp; + + memset(&context,0,sizeof(struct _data_context)); + + /* Only regular files are copied in and out of the heap here */ + xar_prop_get(f, "type", &opt); + if( !opt ) return 0; + if( strcmp(opt, "directory") == 0 ) { + return 0; + } + + tmpp = xar_prop_pfirst(f); + if( tmpp ) + tmpp = xar_prop_find(tmpp, "data"); + return xar_attrcopy_from_heap(x, f, tmpp, NULL , (void *)(&context)); +} diff --git a/setup/xar-1.5.2/lib/data.d b/setup/xar-1.5.2/lib/data.d new file mode 100644 index 0000000..86be51a --- /dev/null +++ b/setup/xar-1.5.2/lib/data.d @@ -0,0 +1,22 @@ +lib/data.o : lib/data.c include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/archive.h lib/io.h diff --git a/setup/xar-1.5.2/lib/data.h b/setup/xar-1.5.2/lib/data.h new file mode 100644 index 0000000..c4bbeac --- /dev/null +++ b/setup/xar-1.5.2/lib/data.h @@ -0,0 +1,44 @@ +/* + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. +*/ +/* + * Rob Braun + * 21-Apr-2004 + * Copyright (c) 2004 Rob Braun. All rights reserved. + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_DATA_H_ +#define _XAR_DATA_H_ +int32_t xar_data_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len); +int32_t xar_data_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len); + +int32_t xar_data_verify(xar_t x, xar_file_t f); +#endif /* _XAR_DATA_H_ */ diff --git a/setup/xar-1.5.2/lib/data.o b/setup/xar-1.5.2/lib/data.o new file mode 100644 index 0000000000000000000000000000000000000000..aff58567c197e2dad558003a84b5fd1e16e3d2a8 GIT binary patch literal 18928 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 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/data.static.d b/setup/xar-1.5.2/lib/data.static.d new file mode 100644 index 0000000..f484ac7 --- /dev/null +++ b/setup/xar-1.5.2/lib/data.static.d @@ -0,0 +1,22 @@ +data.o: lib/data.c include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/archive.h lib/io.h diff --git a/setup/xar-1.5.2/lib/data.static.o b/setup/xar-1.5.2/lib/data.static.o new file mode 100644 index 0000000000000000000000000000000000000000..cb51e7568e75922dacf2688214dbf21aa6be7db0 GIT binary patch literal 18832 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 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/ea.c b/setup/xar-1.5.2/lib/ea.c new file mode 100644 index 0000000..145e6f4 --- /dev/null +++ b/setup/xar-1.5.2/lib/ea.c @@ -0,0 +1,99 @@ +#include +#include +#include +#include +#include + +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include "xar.h" +#include "filetree.h" +#include "archive.h" +#include "b64.h" +#include "ea.h" + +struct __xar_ea_t { + const struct __xar_prop_t *prop; + const struct __xar_ea_t *next; +}; + +#define XAR_EA(x) ((struct __xar_ea_t *)(x)) + +xar_ea_t xar_ea_new(xar_file_t f, const char *name) +{ + xar_ea_t ret; + + ret = calloc(sizeof(struct __xar_ea_t), 1); + if( !ret ) + return NULL; + + XAR_EA(ret)->prop = xar_prop_new(f, NULL); + if( !XAR_EA(ret)->prop ) { + free(ret); + return NULL; + } + + xar_prop_setkey(XAR_EA(ret)->prop, "ea"); + xar_prop_setvalue(XAR_EA(ret)->prop, NULL); + XAR_PROP(XAR_EA(ret)->prop)->attrs = xar_attr_new(); + XAR_ATTR(XAR_PROP(XAR_EA(ret)->prop)->attrs)->key = strdup("id"); + asprintf((char **)&XAR_ATTR(XAR_PROP(XAR_EA(ret)->prop)->attrs)->value, "%lld", XAR_FILE(f)->nexteaid++); + + xar_prop_pset(f, XAR_EA(ret)->prop, "name", name); + + return ret; +} + +int32_t xar_ea_pset(xar_file_t f, xar_ea_t e, const char *key, const char *value){ + if( xar_prop_pset(f, XAR_EA(e)->prop, key, value) ) + return 0; + return -1; +} + +int32_t xar_ea_pget(xar_ea_t e, const char *key, const char **value) { + xar_prop_t r = xar_prop_find(XAR_EA(e)->prop, key); + if( !r ) { + if( value ) + *value = NULL; + return -1; + } + + if(value) + *value = XAR_PROP(r)->value; + + return 0; +} + +xar_prop_t xar_ea_root(xar_ea_t e) { + return XAR_EA(e)->prop; +} + +xar_prop_t xar_ea_find(xar_file_t f, const char *name) +{ + xar_prop_t p; + + for(p = xar_prop_pfirst(f); p; p = xar_prop_pnext(p)) { + const char *tmp; + xar_prop_t tmpp; + + tmp = xar_prop_getkey(p); + if( strncmp(tmp, XAR_EA_FORK, strlen(XAR_EA_FORK)) != 0 ) + continue; + if( strlen(tmp) != strlen(XAR_EA_FORK) ) + continue; + + tmpp = xar_prop_pget(p, "name"); + if( !tmpp ) + continue; + tmp = xar_prop_getvalue(tmpp); + if( !tmp ) + continue; + + if( strcmp(tmp, name) == 0 ) + return p; + } + + return NULL; +} diff --git a/setup/xar-1.5.2/lib/ea.d b/setup/xar-1.5.2/lib/ea.d new file mode 100644 index 0000000..17de538 --- /dev/null +++ b/setup/xar-1.5.2/lib/ea.d @@ -0,0 +1,23 @@ +lib/ea.o : lib/ea.c include/config.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/archive.h \ + lib/b64.h diff --git a/setup/xar-1.5.2/lib/ea.h b/setup/xar-1.5.2/lib/ea.h new file mode 100644 index 0000000..0c43ee6 --- /dev/null +++ b/setup/xar-1.5.2/lib/ea.h @@ -0,0 +1,15 @@ +#ifndef _XAR_EA_H_ +#define _XAR_EA_H_ + +#include "xar.h" +#include "filetree.h" + +typedef struct __xar_ea_t *xar_ea_t; + +xar_ea_t xar_ea_new(xar_file_t f, const char *name); +int32_t xar_ea_pset(xar_file_t f, xar_ea_t e, const char *key, const char *value); +int32_t xar_ea_pget(xar_ea_t e, const char *key, const char **value); +xar_prop_t xar_ea_root(xar_ea_t e); +xar_prop_t xar_ea_find(xar_file_t f, const char *name); + +#endif /* _XAR_EA_H_ */ diff --git a/setup/xar-1.5.2/lib/ea.o b/setup/xar-1.5.2/lib/ea.o new file mode 100644 index 0000000000000000000000000000000000000000..77885143d5b9b2634e58fa2266e7e83baeebe209 GIT binary patch literal 8280 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 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/ea.static.d b/setup/xar-1.5.2/lib/ea.static.d new file mode 100644 index 0000000..b60032d --- /dev/null +++ b/setup/xar-1.5.2/lib/ea.static.d @@ -0,0 +1,23 @@ +ea.o: lib/ea.c include/config.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/archive.h \ + lib/b64.h diff --git a/setup/xar-1.5.2/lib/ea.static.o b/setup/xar-1.5.2/lib/ea.static.o new file mode 100644 index 0000000000000000000000000000000000000000..027fed4226eb7f3872016a2696e576b0d0678312 GIT binary patch literal 8224 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 + */ + +#include +#include +#include +#include "xar.h" +#include "archive.h" + +#define ECTX(x) ((struct errctx *)(x)) + +void xar_register_errhandler(xar_t x, err_handler callback, void *usrctx) { + ECTX(&XAR(x)->errctx)->usrctx = usrctx; + XAR(x)->ercallback = callback; + return; +} + +xar_file_t xar_err_get_file(xar_errctx_t ctx) { + return ECTX(ctx)->file; +} + +void xar_err_set_file(xar_t x, xar_file_t f) { + XAR(x)->errctx.file = f; + return; +} + +const char *xar_err_get_string(xar_errctx_t ctx) { + return ECTX(ctx)->str; +} + +void xar_err_set_string(xar_t x, const char *str) { + XAR(x)->errctx.str = str; + return; +} + +int xar_err_get_errno(xar_errctx_t ctx) { + return ECTX(ctx)->saved_errno; +} + +void xar_err_set_errno(xar_t x, int e) { + XAR(x)->errctx.saved_errno = e; + return; +} + +void xar_err_new(xar_t x) { + memset(&XAR(x)->errctx, 0, sizeof(struct errctx)); + XAR(x)->errctx.saved_errno = errno; + return; +} + +int32_t xar_err_callback(xar_t x, int32_t sev, int32_t err) { + if( XAR(x)->ercallback ) + return XAR(x)->ercallback(sev, err, &XAR(x)->errctx, ECTX(&XAR(x)->errctx)->usrctx); + return 0; +} diff --git a/setup/xar-1.5.2/lib/err.d b/setup/xar-1.5.2/lib/err.d new file mode 100644 index 0000000..b3ec97f --- /dev/null +++ b/setup/xar-1.5.2/lib/err.d @@ -0,0 +1,22 @@ +lib/err.o : lib/err.c include/xar.h lib/archive.h \ + /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h diff --git a/setup/xar-1.5.2/lib/err.o b/setup/xar-1.5.2/lib/err.o new file mode 100644 index 0000000000000000000000000000000000000000..82d7167313d8c70848afc84564f7c232454a4dfa GIT binary patch literal 14376 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 I#ZB7(AK-83Q~&?~ literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/err.static.d b/setup/xar-1.5.2/lib/err.static.d new file mode 100644 index 0000000..315cfad --- /dev/null +++ b/setup/xar-1.5.2/lib/err.static.d @@ -0,0 +1,22 @@ +err.o: lib/err.c include/xar.h lib/archive.h \ + /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h diff --git a/setup/xar-1.5.2/lib/err.static.o b/setup/xar-1.5.2/lib/err.static.o new file mode 100644 index 0000000000000000000000000000000000000000..58fa0a560fbd915ced4b75854b7321c3c0afaa8e GIT binary patch literal 14328 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 bEd%v}xgh literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/ext2.c b/setup/xar-1.5.2/lib/ext2.c new file mode 100644 index 0000000..767891a --- /dev/null +++ b/setup/xar-1.5.2/lib/ext2.c @@ -0,0 +1,257 @@ +/* + * Copyright (c) 2004 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 26-Oct-2004 + * DRI: Rob Braun + * Ported from xar-unsaxy 16-Apr-2005 + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include +#include +#include "xar.h" +#include "arcmod.h" +#include +#include +#include +#include +#include +#include "ext2.h" + +#ifdef HAVE_EXT2FS_EXT2_FS_H +#include +#else +#if defined(HAVE_LINUX_EXT2_FS_H) +typedef uint32_t u32; +typedef uint8_t u8; +#include +#endif +#endif + +#define XAR_EXT2_FORK "ext2" + +#if defined(HAVE_EXT2FS_EXT2_FS_H) || defined(HAVE_LINUX_EXT2_FS_H) +static void x_addprop(xar_file_t f, const char *name) { + char opt[1024]; + memset(opt, 0, sizeof(opt)); + snprintf(opt, sizeof(opt)-1, "%s/%s", XAR_ATTR_FORK, name); + xar_prop_set(f, opt, NULL); + xar_attr_set(f, opt, "fstype", "ext2"); + return; +} +#endif + +int xar_ext2attr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len) +{ + int ret = 0; + + /* if archiving from a buffer, then there is no place to get extattr */ + if ( len ) + return 0; + +#if defined(HAVE_EXT2FS_EXT2_FS_H) || defined(HAVE_LINUX_EXT2_FS_H) + int fd, flags=0, version; + char *vstr; + const char *opt; + + xar_prop_get(f, "type", &opt); + if(!opt) return 0; + if( strcmp(opt, "file") != 0 ) { + if( strcmp(opt, "hardlink") != 0 ) + if( strcmp(opt, "directory") != 0 ) + return 0; + } + + fd = open(file, O_RDONLY); + if( fd < 0 ) { + return 0; + } + if( ioctl(fd, EXT2_IOC_GETVERSION, &version) < 0 ) { + ret = 0; + goto BAIL; + } + if( ioctl(fd, EXT2_IOC_GETFLAGS, &flags) < 0 ) { + ret = 0; + goto BAIL; + } + + if( flags == 0 ) goto BAIL; + + xar_prop_set(f, XAR_EXT2_FORK, NULL); + asprintf(&vstr, "%d", version); + xar_attr_set(f, XAR_EXT2_FORK, "version", vstr); + free(vstr); + + if(! (flags & ~EXT2_SECRM_FL) ) + x_addprop(f, "SecureDeletion"); + if(! (flags & ~EXT2_UNRM_FL) ) + x_addprop(f, "Undelete"); + if(! (flags & ~EXT2_COMPR_FL) ) + x_addprop(f, "Compress"); + if(! (flags & ~EXT2_SYNC_FL) ) + x_addprop(f, "Synchronous"); + if(! (flags & ~EXT2_IMMUTABLE_FL) ) + x_addprop(f, "Immutable"); + if(! (flags & ~EXT2_APPEND_FL) ) + x_addprop(f, "AppendOnly"); + if(! (flags & ~EXT2_NODUMP_FL) ) + x_addprop(f, "NoDump"); + if(! (flags & ~EXT2_NOATIME_FL) ) + x_addprop(f, "NoAtime"); + if(! (flags & ~EXT2_DIRTY_FL) ) + x_addprop(f, "CompDirty"); + if(! (flags & ~EXT2_COMPRBLK_FL) ) + x_addprop(f, "CompBlock"); +#ifdef EXT2_NOCOMPR_FL + if(! (flags & ~EXT2_NOCOMPR_FL) ) + x_addprop(f, "NoCompBlock"); +#endif + if(! (flags & ~EXT2_ECOMPR_FL) ) + x_addprop(f, "CompError"); + if(! (flags & ~EXT2_BTREE_FL) ) + x_addprop(f, "BTree"); + if(! (flags & ~EXT2_INDEX_FL) ) + x_addprop(f, "HashIndexed"); + if(! (flags & ~EXT2_IMAGIC_FL) ) + x_addprop(f, "iMagic"); +#ifdef EXT3_JOURNAL_DATA_FL + if(! (flags & ~EXT3_JOURNAL_DATA_FL) ) + x_addprop(f, "Journaled"); +#endif + if(! (flags & ~EXT2_NOTAIL_FL) ) + x_addprop(f, "NoTail"); + if(! (flags & ~EXT2_DIRSYNC_FL) ) + x_addprop(f, "DirSync"); + if(! (flags & ~EXT2_TOPDIR_FL) ) + x_addprop(f, "TopDir"); + if(! (flags & ~EXT2_RESERVED_FL) ) + x_addprop(f, "Reserved"); + +BAIL: + close(fd); +#endif + return ret; +} + +#if defined(HAVE_EXT2FS_EXT2_FS_H) || defined(HAVE_LINUX_EXT2_FS_H) +static int32_t e2prop_get(xar_file_t f, const char *name, char **value) { + char v[1024]; + + memset(v, 0, sizeof(v)); + snprintf(v, sizeof(v)-1, "%s/%s", XAR_ATTR_FORK, name); + return xar_prop_get(f, v, (const char**)value); +} +#endif + +int xar_ext2attr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len) +{ + /* if extracting to a buffer, then there is no place to write extattr */ + if ( len ) + return 0; + +#if defined(HAVE_EXT2FS_EXT2_FS_H) || defined(HAVE_LINUX_EXT2_FS_H) + int fd = -1, version, flags = 0; + char *tmp; + + if( xar_prop_get(f, XAR_EXT2_FORK, NULL) == 0 ) { + const char *temp; + temp = xar_attr_get(f, XAR_EXT2_FORK, "version"); + version = strtol(temp, NULL, 10); + fd = open(file, O_RDONLY); + if( fd < 0 ) + return 0; + ioctl(fd, EXT2_IOC_SETVERSION, &version); + } + + if( xar_prop_get(f, XAR_ATTR_FORK, NULL) ) { + if( fd >= 0 ) close(fd); + return 0; + } + + if( e2prop_get(f, "SecureDeletion", (char **)&tmp) == 0 ) + flags |= EXT2_SECRM_FL; + if( e2prop_get(f, "Undelete", (char **)&tmp) == 0 ) + flags |= EXT2_UNRM_FL ; + if( e2prop_get(f, "Compress", (char **)&tmp) == 0 ) + flags |= EXT2_COMPR_FL ; + if( e2prop_get(f, "Synchronous", (char **)&tmp) == 0 ) + flags |= EXT2_SYNC_FL ; + if( e2prop_get(f, "SystemImmutable", (char **)&tmp) == 0 ) + flags |= EXT2_IMMUTABLE_FL ; + if( e2prop_get(f, "AppendOnly", (char **)&tmp) == 0 ) + flags |= EXT2_APPEND_FL ; + if( e2prop_get(f, "NoDump", (char **)&tmp) == 0 ) + flags |= EXT2_NODUMP_FL ; + if( e2prop_get(f, "NoAtime", (char **)&tmp) == 0 ) + flags |= EXT2_NOATIME_FL ; + if( e2prop_get(f, "CompDirty", (char **)&tmp) == 0 ) + flags |= EXT2_DIRTY_FL ; + if( e2prop_get(f, "CompBlock", (char **)&tmp) == 0 ) + flags |= EXT2_COMPRBLK_FL ; +#ifdef EXT2_NOCOMPR_FL + if( e2prop_get(f, "NoCompBlock", (char **)&tmp) == 0 ) + flags |= EXT2_NOCOMPR_FL ; +#endif + if( e2prop_get(f, "CompError", (char **)&tmp) == 0 ) + flags |= EXT2_ECOMPR_FL ; + if( e2prop_get(f, "BTree", (char **)&tmp) == 0 ) + flags |= EXT2_BTREE_FL ; + if( e2prop_get(f, "HashIndexed", (char **)&tmp) == 0 ) + flags |= EXT2_INDEX_FL ; + if( e2prop_get(f, "iMagic", (char **)&tmp) == 0 ) + flags |= EXT2_IMAGIC_FL ; +#ifdef EXT3_JOURNAL_DATA_FL + if( e2prop_get(f, "Journaled", (char **)&tmp) == 0 ) + flags |= EXT3_JOURNAL_DATA_FL ; +#endif + if( e2prop_get(f, "NoTail", (char **)&tmp) == 0 ) + flags |= EXT2_NOTAIL_FL ; + if( e2prop_get(f, "DirSync", (char **)&tmp) == 0 ) + flags |= EXT2_DIRSYNC_FL ; + if( e2prop_get(f, "TopDir", (char **)&tmp) == 0 ) + flags |= EXT2_TOPDIR_FL ; + + if( fd < 0 ) { + fd = open(file, O_RDONLY); + if( fd < 0 ) + return 0; + } + + ioctl(fd, EXT2_IOC_SETFLAGS, &flags); + close(fd); +#endif + return 0; +} diff --git a/setup/xar-1.5.2/lib/ext2.d b/setup/xar-1.5.2/lib/ext2.d new file mode 100644 index 0000000..0e2589b --- /dev/null +++ b/setup/xar-1.5.2/lib/ext2.d @@ -0,0 +1,22 @@ +lib/ext2.o : lib/ext2.c include/config.h include/xar.h lib/arcmod.h \ + lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/ext2.h diff --git a/setup/xar-1.5.2/lib/ext2.h b/setup/xar-1.5.2/lib/ext2.h new file mode 100644 index 0000000..9c3a37b --- /dev/null +++ b/setup/xar-1.5.2/lib/ext2.h @@ -0,0 +1,42 @@ +/* All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. +*/ +/* + * Rob Braun + * 26-Oct-2004 + * Copyright (c) 2004 Rob Braun. All rights reserved. + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_EXT2_H_ +#define _XAR_EXT2_H_ +#define XAR_ATTR_FORK "attribute" +int xar_ext2attr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len); +int xar_ext2attr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len); +#endif /* _XAR_EXT2_H_ */ diff --git a/setup/xar-1.5.2/lib/ext2.o b/setup/xar-1.5.2/lib/ext2.o new file mode 100644 index 0000000000000000000000000000000000000000..aba9c81e7314a395062a8f56fd7ff740c60b72ba GIT binary patch literal 5368 zcmbtXU2I%O6`s4-Yp=8R#)*O23W!B&Nh;X8YvXL)Bu+PR-K=Sxn4k#vp=|E%&i>H- z4k)?aVpf`JFR!XJ(&XIr~_|afE4(I4SON1{Gp)>K>g_WKK+rDRD8s_1FB?^}pq} zdUx_$7jNgc)_!w#Yvr|9SKcA5{4>{I6XDoRqW|H3ZRMROZ?VN&u(%5gSgzfH#cinG z?yE+X#gn%VyF!eRv52XxCKNr;6$a=C(UIGW=-t>DF|HF+Lqu~U4326rO2f!VwB8C~ zpg6XR#;!x;I!ZAb`zn}Gg|J(#tm3&3Q9MPCJh}ri8e2uGD$+*u4AClwXg*6ynqJ)@ zSkoVW7Vy+~t1F_96FH;dvqUE~y+*N*X!;z*$Y}aJ(Tkd1CptGSefasrDTK;v{KAXC z*Tv||7<878J%QlSSQ-63fMT=&%AHbWc4KN#*(akJN^|@vc~wN`C>_pzp6Hm$_+vy) z=|~HtJp<1#V;sGLPPxfP7is3&&BFt3jwv_V_Bg4qpA$rL6_$wRDx4($T!lvls*oc; ziz=N{MCOpf37C!k6#5uJjh)39ja@*mrW_~KSu4`OZJtNxh1a1qu?g`xvftjAsDSYZsJ({czksl zIo&Vf@sp5a&ohbINB09I@#u#I4P(=en~2BB$N?Lh?0Z;5(Z<2Xv_oR|O+$KOR*1Og zJTj|89iCmCruey;Z=Iec7ZcIGO=L!hNwAy~v5AFU(*5t^2$TFMO%y-gg^HqX@C4|C zAa3Co5#L1bIBzE=(W_$)Yw9%WMUn1xgEWYAwNy%PE@lhag;b;7>TRZ~tzPl8ESF`)t5I&Cah8C_skP|`AV!3!)EhDkqyz_b>FW`-)RRGe z?yrRt>s{%&Z-{Woo%CXtd+skq_(UXvq|>!_Q>Ke8Sxqmu%QC&v?9>C9p7%0^q740X zSBAY#8qrd7-cfH}bnDk-ArviSC}?_|>1Dsslay3}06z?af*+J>^~)NhBw^L@1Bt_s z)I!n2T(S!wNGJ*gW$crn)vZ@svYaf{{6I9?t!lCl(OIfhJ3+ext!8wZ|r`OREO|tM-C`bZaN*J^jxVNfnN$` zSrmJfiVQ@h+wsGiHdA_-M_03)>EP`3Tva`F-TLKa$KuSni^=7=x#UrA!OJA)GjrKY zHuG>Y)eL(rxm1-c8PrQ)X*rg#5mVWPWU87>Rn}LR(RV|?^i&GP3}q>72dQotpx|7l zP>3_j%g2&OE*5*Ou%~0BvOUGkeSR+MWfr`J2d&uHa^gMIp*hzs2xoK3IW#dAdk*{a z{lMr)O&y7+5>sD_EKiO$p#Y3zCrF5<&MzacX}Ol{?co|9!@vHsSAzXdAI6a8^7n3w zT>8F-G?$+Ww#XIg9=Bn5Q5Vz@e0&c^fGgC!u}9_#butgZan=rLuGsU8Q8(+sfjXG$ z=mW4P-0-UAcz1&aA*? zpc-^dYFO#hJ~GW?!uZcHf84@fV*a#+KhONCg}=i5x`qFn`A=E+^E}^ATljg# z8y3FFc-O)g8UKQX?_>Py7CyuHw=Mh>}SKm*BCD{PUcK1$+o3$^0{H* zpW(Q_vhW`>{yWBve{*h{E5p>m_)qXvVsPW%oQ;I5e}O2W%SVRZQaKq8J7Qy z`k#Bxp7N(xmYshYnC%mg_yfm(m6(BM>(c%h7C+DNO`Rw{mDG;k0Y*OUdA`JTH|HQ! zR5S6-_&K1%>|deDq8-&kzc+Sfd=?Tz_mx1r$@YU7(Y7wV7YG|XQ%LVEw%;ITpqcp_ z=o=u0)$h`f^`lp;u^+6fwZ)a|=h*&xCJ>Ky{=;%7)pZV3V}pahCh@c5)0z&8f0MtT M{&@;LYIgkp0^F@7ssI20 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/ext2.static.d b/setup/xar-1.5.2/lib/ext2.static.d new file mode 100644 index 0000000..d252ea9 --- /dev/null +++ b/setup/xar-1.5.2/lib/ext2.static.d @@ -0,0 +1,22 @@ +ext2.o: lib/ext2.c include/config.h include/xar.h lib/arcmod.h \ + lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/ext2.h diff --git a/setup/xar-1.5.2/lib/ext2.static.o b/setup/xar-1.5.2/lib/ext2.static.o new file mode 100644 index 0000000000000000000000000000000000000000..5997005fbbd9b14a570a141e34481503b14e3790 GIT binary patch literal 5360 zcmbtYU5r~t6+YK@z3Z)a9Vg3ARsrEkl%xV*dzX#7O|q$zWgBmsP12x?eULl zUz_`rY=T0OTA?hwumw~h6{^w)N*}6L`_ks2trV$$Pziw$D<05Fs8SIRDGwk-i{PA@ zGmdxGeSwjD=bZ2S&Y8J0bN%Sj>3d_A1-e;q9By$M1<0pw(M3rXVG7c4p|t*9Y5nT^ zrS)jLw0>c$w7&A2)9Xuby}9%eX_X$k`WA#^FBAP&`}<2DJ#>RD{)rYJpaoj4Y@@{% zs&4gF`x8wYKG5i*8^%xXf?1CR0m9V0rnHIGj_F-DASC1e*<+z5lC3XD@XG7@ij zAsR@I?c#~6D6%c77*Bi;nNf+bTcs@H*>_PqNsfGF6UlgD8B>*!R^z9LmN~>r1yWM< z@+QHGzVC5_)8k$M@%xF~ui(=}XB53cu@5Qw48_PR`Yh4&iatklaa_3Q=YbO#s-*Dq zKSlf;jJ|@M%JSX^F?c*t!{==X!e|*OJ1xs>CuAqH&&2bT=J+GxGQ?*n9nOB1=!DGp z%S5JCq&d>wkDgz_e)JMPq?=NFo<^?R+&$pth;*ZDkCF=eIYu;BVS#9_!g2D?Rk&xM z3PtiWFVi_eWD!$1hGwI$qCWOWjh)6mo;Z(BIpidv)=GssZnNB5PrZX$6Kg0wL-rf1 z6LqAYLvd{5+$3pPD-!nk|s6l zDGIl#!Zj(}rV9743b3idtul8BO)wP|Zj+o~D(Gdebw_F{X{QdP_FDVK(w|2BQ(&i# zB#$PSr!c3_Lo#_B<+$dV#M;OAAWGuVF93C8Qe4x5_{Ve zN{>wgBpvIXX%*_=^zszNFYbTxRj5H8r0PU2!@zYXDou^1+uYj!&#SMfw6x7e+T+)}64@Kf5Kk?&*aX(rkXu zO_5FS)sSZM6~PqQAkS|TMlbSU8iJ4S!U(WIo)^1hHpm@$2#$N~kY>ZK>x(>5_YKrR zA48u-d%`s@Yfe6Cnc&Xzv2XIOWuy|(m7wEK(Pa60SnO`>WcbPwD;48e;zGmRRX8aol zevR?AfxpCfVBp_m{5uBzb;h4C@P9G>69d1(_|Ht7`Cl4%h573S{tWYP82EMe|62q9 z3-f<6@P9D>cLRT({pe2zJ&#W?KFPhtJ8VB~;MT$zF^>VSEY8=z;Qp6?O_Ao z%ZssX;IA_u82C;0vu5C1%+p>;O^@r8V&NACuJeD*z+Y$mKNz_7^JfFsb-QWc+wA8< z1J`lKc-%TqJ-<^1{uulDoPq0kKWX4ij`vjqzs7!64Sa?13gcwXq?BwJ`Z}Md4g6V- z`zr%~kMZ9#uKnwMQy&?+4%&Z;j}nb*|9WpETz(O9{`&J*`)3$_&V-3)7^k#2HHj1r zyq~8NT<(N!1suGpsJ^MG5chO&YHsL)Qwaiae9?BDny5sLa?7iCQ6_1(Qt`#b9b(sa zy@uFng120uO)vyF)o!Ol*FML?>ym?aF1#+`^@$ycX1VUW9l?qJpWOkpr&{ScYj;H^ z%-cNa4z}BoA&jT5FM7I9?IcY5gD9qR=zq1JL0i)&Mbz=XXgD@?=_>|53ZRI;!S?>R z;tuhmqw|;a^qGmDO0q5B)AUJ#cR21gF$2xirE}55Nd0*VhE1QtircMwKMIEBpO)XZ zx9ll@x@DR9*AN>P|BoF1O_UEdQbE*%{^%B~?FZ{>EOF`j8rwgs195NWKP-1rRsU82=<{VCVw3nYj6& literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/fbsdattr.c b/setup/xar-1.5.2/lib/fbsdattr.c new file mode 100644 index 0000000..4787920 --- /dev/null +++ b/setup/xar-1.5.2/lib/fbsdattr.c @@ -0,0 +1,337 @@ +/* + * Copyright (c) 2007 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 28-Oct-2004 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#include "config.h" +#include +#include "xar.h" +#include "arcmod.h" +#include "b64.h" +#include "io.h" +#include "archive.h" +#include +#include +#include + +/* FreeBSD Extended Attribute Headers */ +#ifdef HAVE_SYS_EXTATTR_H +#include +#endif +#ifdef HAVE_LIBUTIL_H +#include +#endif + +#ifdef HAVE_SYS_EXTATTR_H +#include +#include +#include +#endif + +#ifdef HAVE_SYS_EXTATTR_H +struct _fbsdattr_context{ + const char *file; + const char *attrname; + void *buf; + int off; + int bufsz; + int ns; +}; + +#define FBSDATTR_CONTEXT(x) ((struct _fbsdattr_context *)(x)) + +int32_t xar_fbsdattr_read(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + if( !FBSDATTR_CONTEXT(context)->buf ) { + FBSDATTR_CONTEXT(context)->bufsz = extattr_get_link(FBSDATTR_CONTEXT(context)->file, FBSDATTR_CONTEXT(context)->ns, FBSDATTR_CONTEXT(context)->attrname, NULL, 0); + if( FBSDATTR_CONTEXT(context)->bufsz < 0 ) + return -1; + FBSDATTR_CONTEXT(context)->buf = malloc(FBSDATTR_CONTEXT(context)->bufsz); + if( !FBSDATTR_CONTEXT(context)->buf ) + return -1; + + FBSDATTR_CONTEXT(context)->bufsz = extattr_get_link(FBSDATTR_CONTEXT(context)->file, FBSDATTR_CONTEXT(context)->ns, FBSDATTR_CONTEXT(context)->attrname, FBSDATTR_CONTEXT(context)->buf, FBSDATTR_CONTEXT(context)->bufsz); + } + + if( (FBSDATTR_CONTEXT(context)->bufsz - FBSDATTR_CONTEXT(context)->off) <= len ) { + int32_t ret; + + ret = FBSDATTR_CONTEXT(context)->bufsz - FBSDATTR_CONTEXT(context)->off; + memcpy(buf, FBSDATTR_CONTEXT(context)->buf+FBSDATTR_CONTEXT(context)->off, ret); + FBSDATTR_CONTEXT(context)->off += ret; + return(ret); + } else { + memcpy(buf, FBSDATTR_CONTEXT(context)->buf+FBSDATTR_CONTEXT(context)->off, len); + FBSDATTR_CONTEXT(context)->buf += len; + return(len); + } + +} +int32_t xar_fbsdattr_write(xar_t x, xar_file_t f, void *buf, size_t len, void *context) { + return extattr_set_link(FBSDATTR_CONTEXT(context)->file, FBSDATTR_CONTEXT(context)->ns, FBSDATTR_CONTEXT(context)->attrname, buf, len); +} +#endif + +int32_t xar_fbsdattr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len) +{ +#ifdef HAVE_SYS_EXTATTR_H + char *buf = NULL; + int ret, retval=0, bufsz, i; +#if defined(HAVE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_FSTYPENAME) + struct statvfs sfs; +#else + struct statfs sfs; +#endif + char *fsname = NULL; + int namespace = EXTATTR_NAMESPACE_USER; + struct _fbsdattr_context context; + + memset(&context,0,sizeof(struct _fbsdattr_context)); + + /* no fbsdattr attributes for data to a buffer */ + if(len) + return 0; + if(file == NULL) + return 0; + +TRYAGAIN: + /* extattr_list_link()'s man page does not define the return + * value. The kernel source comments say 0 for success, -1 for + * failure. However, the observed behavior is # of bytes + * used, 0 if none, -1 on error. + * Also, errno is not documented to be set to anything useful + * if buf is too small. We are using an undocumented "feature" + * that if the data argument is NULL, it will return the number + * of bytes that would have been written (beware, return value + * does not indicate success or failure on it's own. Need to + * check the return value *and* the parameters. + */ + ret = extattr_list_link(file, namespace, NULL, 0); + if( ret < 0 ) { + if( namespace == EXTATTR_NAMESPACE_USER ) { + namespace = EXTATTR_NAMESPACE_SYSTEM; + goto TRYAGAIN; + } else { + /* If we get eperm on system namespace, don't + * return error. This is expected for normal + * users trying to archive the system namespace + * on freebsd 6.2. On netbsd 3.1, they've decided + * to return EOPNOTSUPP instead. + */ + if( errno == EPERM ) + ret = 0; + else if( errno == EOPNOTSUPP ) + ret = 0; + else { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Error archiving EA"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_CREATION); + ret = 0; + } + goto BAIL; + } + } + bufsz = ret; + buf = malloc(bufsz); + if( !buf ) { + retval = -1; + goto BAIL; + } + memset(buf, 0, bufsz); + ret = extattr_list_link(file, namespace, buf, bufsz); + if( ret < 0 ) { + switch(errno) { + case ENOTSUP: retval=0; goto BAIL; + default: retval=-1; goto BAIL; + }; + } + /* Even though 0 is a documented success, observed behavior + * indicates 0 means all perms were satisfied, etc, but + * no extattrs were found to list. + */ + if( ret == 0 ) { + if( namespace == EXTATTR_NAMESPACE_USER ) { + namespace = EXTATTR_NAMESPACE_SYSTEM; + goto TRYAGAIN; + } else { + /* If we get eperm on system namespace, don't + * return error. This is expected for normal + * users trying to archive the system namespace + * on freebsd 6.2. On netbsd 3.1, they've decided + * to return EOPNOTSUPP instead. + */ + if( errno == EPERM ) + ret = 0; + else if( errno == EOPNOTSUPP ) + ret = 0; + else { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Error archiving EA"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_CREATION); + ret = 0; + } + goto BAIL; + } + } + + +#if defined(HAVE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_FSTYPENAME) + statvfs(file, &sfs); +#else + statfs(file, &sfs); +#endif + + fsname = sfs.f_fstypename; + + /* extattr_list_link() does not return the series of keys NUL + * separated, as documented in the man page. Instead, it + * returns things DNS style, with a 1 byte length followed by + * the key, repeated for as many keys as there are. + */ + for( i=0; i < ret; i++ ) { + char key[256]; + char *ns; + char tempnam[1024]; + xar_ea_t e; + + memset(key, 0, sizeof(key)); + memcpy(key, buf+i+1, buf[i]); + i += buf[i] ; + + extattr_namespace_to_string(namespace, &ns); + memset(tempnam, 0, sizeof(tempnam)); + snprintf(tempnam, sizeof(tempnam)-1, "%s.%s", ns, key); + FBSDATTR_CONTEXT(&context)->ns = namespace; + FBSDATTR_CONTEXT(&context)->file = file; + FBSDATTR_CONTEXT(&context)->attrname = key; + + e = xar_ea_new(f, tempnam); + xar_ea_pset(f, e, "fstype", fsname); + xar_attrcopy_to_heap(x, f, xar_ea_root(e), xar_fbsdattr_read, &context); + + free(FBSDATTR_CONTEXT(&context)->buf); + FBSDATTR_CONTEXT(&context)->buf = NULL; + FBSDATTR_CONTEXT(&context)->off = 0; + } + + if( namespace == EXTATTR_NAMESPACE_USER ) { + namespace = EXTATTR_NAMESPACE_SYSTEM; + free(buf); + buf = NULL; + goto TRYAGAIN; + } + +BAIL: + free(buf); + return ret; +#else + return 0; +#endif +} + +int32_t xar_fbsdattr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len) +{ +#ifdef HAVE_SYS_EXTATTR_H + char *fsname = "bogus"; + xar_prop_t p; +#if defined(HAVE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_FSTYPENAME) + struct statvfs sfs; +#else + struct statfs sfs; +#endif + int eaopt = 0; + struct _fbsdattr_context context; + + memset(&context,0,sizeof(struct _fbsdattr_context)); + + /* no fbsdattr attributes for data to a buffer */ + if(len){ + return 0; + } + +#if defined(HAVE_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_FSTYPENAME) + statvfs(file, &sfs); +#else + statfs(file, &sfs); +#endif + fsname = sfs.f_fstypename; + + for(p = xar_prop_pfirst(f); p; p = xar_prop_pnext(p)) { + const char *fs = NULL; + const char *prop; + const char *eaname = NULL; + xar_prop_t tmpp; + + prop = xar_prop_getkey(p); + + if( strncmp(prop, XAR_EA_FORK, strlen(XAR_EA_FORK) != 0 ) ) + continue; + if( strlen(prop) != strlen(XAR_EA_FORK) ) + continue; + + tmpp = xar_prop_pget(p, "fstype"); + if( tmpp ) + fs = xar_prop_getvalue(tmpp); + + if( !eaopt && fs && strcmp(fs, fsname) != 0 ) { + continue; + } + + tmpp = xar_prop_pget(p, "name"); + if( tmpp ) + eaname = xar_prop_getvalue(tmpp); + + if( !eaname ) + continue; + + if( strncmp(eaname, "user.", 5) == 0 ) { + FBSDATTR_CONTEXT(&context)->ns = EXTATTR_NAMESPACE_USER; + FBSDATTR_CONTEXT(&context)->attrname = eaname + 5; + } else if( strncmp(eaname, "system.", 7) == 0 ) { + FBSDATTR_CONTEXT(&context)->ns = EXTATTR_NAMESPACE_SYSTEM; + FBSDATTR_CONTEXT(&context)->attrname = eaname + 7; + } else { + continue; + } + + FBSDATTR_CONTEXT(&context)->file = file; + xar_attrcopy_from_heap(x, f, p, xar_fbsdattr_write, &context); + } + + +#endif + return 0; +} diff --git a/setup/xar-1.5.2/lib/fbsdattr.d b/setup/xar-1.5.2/lib/fbsdattr.d new file mode 100644 index 0000000..9784d1e --- /dev/null +++ b/setup/xar-1.5.2/lib/fbsdattr.d @@ -0,0 +1,23 @@ +lib/fbsdattr.o : lib/fbsdattr.c include/config.h include/xar.h lib/arcmod.h \ + lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/b64.h lib/io.h \ + lib/archive.h diff --git a/setup/xar-1.5.2/lib/fbsdattr.h b/setup/xar-1.5.2/lib/fbsdattr.h new file mode 100644 index 0000000..71d3209 --- /dev/null +++ b/setup/xar-1.5.2/lib/fbsdattr.h @@ -0,0 +1,41 @@ +/* All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. +*/ +/* + * Rob Braun + * 26-Oct-2004 + * Copyright (c) 2004 Rob Braun. All rights reserved. + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_FBSDATTR_H_ +#define _XAR_FBSDATTR_H_ +int32_t xar_fbsdattr_archive(xar_t x, xar_file_t f, const char* file, const char *buffer, size_t len); +int32_t xar_fbsdattr_extract(xar_t x, xar_file_t f, const char* file, char *buffer, size_t len); +#endif /* _XAR_FBSDATTR_H_ */ diff --git a/setup/xar-1.5.2/lib/fbsdattr.o b/setup/xar-1.5.2/lib/fbsdattr.o new file mode 100644 index 0000000000000000000000000000000000000000..94b5dd543655e9a825f7dffea659b8df3f0130fc GIT binary patch literal 12480 zcmb_i3vgW3c|Lbnl2^O3q_u1#unQvL;ZU@aY*`rjfw26Lu`$A6EC~2=clWNe_G)+8 zdsmSa9*!X-4uRT~Jb1N0z|b(AfJxe7NCQnf$uu<0qvOzNASraxgc1ldrQd(f ze^#sCn#oM3XGZt@|9AfLzs`To-iL16ykkqmag=S2+Ms4Ri=w}9mLAgNkm^wFYWK+D ze;+w~%R3{7tG^yOy!-W$!-7N}ow3z-5~*#));|Qg z-OwA3g6=f*P#N@cLtpw)&|QWeCYR4K^k&kz!qAsdRK14Y`6B2wh93Ps=pjRYcnLxr zG4%CBj~V&~q9+W!k6fNs%@p<^$oO#(5fjkz=Dt6%0X46@3X@Dg&8tR0H)sXT{X{nz zdi7q=CeY>qqD`R97t!2Kle^|YGNaSjJbVHw4Y}zVpiQwYQBLMqd@IpfZ+v8i%Foc- z-ayqE8}ZBbf^JU~0~Oy+q{(G`2hm+d{BkOd6^7nPHcZaqR}gJ-79S;gDB*k1bLA13 z8Zq*_D1=ef@>du(UT(PtJ~hSO0=E!))tX3R4KZ3iaq-7%ZYBnQS93G5w&rGH-K?95 z^|Nj!HV|#xOkDCr&CSFR;l|CxrLV!_P$HLAiH%eh#><4RkR8T@P45FAHS}hp&59?s z&^q2|@U16+A2jsHTcAH_=xszFG4yt#KcAQhRANUnphsH4tHkBxLAzs^ojq`^lbI{- zjw9vFjJ}JM3^8-%Vu+0}V=~IjRR=IK#>~~k+{nysVkVfm<|G^_GqZ;Re}tJaVjgGa z+B_EPDMz(jk0pYArJA=kKuuGu4c9gTTH>J0(8yVO=z`kNxwWCo2KCSouI+K?q!maK zVJ;6KlSxV;G-ol?LItLkwk!$3YfFY-dI$KXSYBU`;JPT%u16x~OlyjDYc)?}sD(&< zjC93&sl*fe{R1lAN7hYw#a9v?)78F;NVB=({UqH9JHJ8S@(eE8Mtp#9t#Ks2hBlDV zcyXP^L9J0Qd3-I2u*!8r^JZF4beECYKq^g@#xJScOr}b;XP1)7A$W5T(^?|97;lD2 zjV2c^co1Y$>``2GvN{l*HO2l2*Tvm6DH1iQD!1)^6|fGs?HVGP-b0#V1|NGKv`JOl zbtGd_)%IbMF{x_1o@7=eCWCR+w)Zut={0lRD0;J@+q_pHGi2~I`D}J{TZa4@HMmbT zZgz27j&$B=@NuFi5XwvFmq11}wEaU9DPKwqXqrf|z7EAEO%oKcCfjd63zFb)_9q`X z30iASKB^}f`Z1!-A)ovL(I)!jLFGIO8&I%rcU$)`?&Hqj^l zg5*u~$)^|N$QUy6f4LE~i9Y$v2xt?1@>#N*H8RJEo-p*6ryx`2Snl`_fI0=e$rfiT zEa(&@7dkgXikVht90M^k(ynW&-7raANS%i1a6W-KU4~iWP)IA-%%^sNncdy(&!#Qk z6x#!`o&38QM3OE@Jf*cMHfe`QmmW%f3R@&eCoG0PX@@CeX86xBjFBhp$Pa5HL}BD7 z=vs{SZ(E^OxSb>ql24F!+CNEBl+**XRWOmzrr0m+97?*JGdr8-oB^R`QalDi-yJlV zP-zK_!`iIA@Ej6tiXFnWWwA~IEsCzTu0-EUfD=JjQ3-vZDZQeJRW#pJSfZbP08ND@ zR+Gw3bsDb9*+<8)ZD%pzJe0z1Zs#f!)s8OHMw%UKML9|5+}4gn zv~^i)(pj{i9ic_eQHjI`K)APN5?N_js-mrfiM5GsIPn_WAcCw?NBn{gC)%1w(69qG zwy-9<24c;Qv#o>h_}OY(M-Pw$1Y$-R3ACIC95*pqOQY4&TBijGYwLj0b;w!!66gHW zjlyK3p19~dMAyL%Hj=8vBts^b)I4h>b}8$G5E(u#;Q35!%x28KF6w^7gRY^?bh z=~U`;upB?JXVhjk&Y7vyGM)z$B)FXCF{>Y~Pz-3g)HFqx4K->m@jVn-L>1xiU;{yvk0{5@>(glAMCuiBK_{GqL^@^7X z{j3U08F)Xf{Nj{5nRSCuyQVfC2>qPG+Io~XAKJaJ&N3UEEMiFuIze7Y0hMejDJit77&8t*HeJ}CfoDLF)xg-YW+=OGj@(gY+}#?VNJ~&nXAyzP zaNmG7=6WPwXQSfZRLxiXtUEh*^EIRH==ROmy2DqGDYrgLYRa$Va|e`J?!cSEJik)W z@sz!6ugX>@Cl4UWfnULxw&Np92qEiF83(HQELEAYhwM^X=PZ_9DVK^wktdgL(td2+ zxw~t)udi!$sz24+wX(Nwpm(76;;!z=uv+xjkNZVvyy<)YDZ4i0|w^XHq3@5O&wS&4Uc`N(H@q7`x&qEMYyI5k{ zJ1G2dOvscbF((L65Ux9?Fo_9SKlV1x4}_a>YxM(lI)MtuS|N+wiH#DjT1k%E?X6D- zePWP<*a(@hQc!d>m>gh&kDMc9>{6c!ILMc<4fT4`9-8#V^Cng1nAopZ!7i>F*xk>i zN+)wrMlv-|MQV;FvYyMskec!eIEh@^=5TbXl+TuP`jFF(n?r6Tv{K5b_~&e}GMzUF zyMp~<_Ib8c#rcE`;1o3JqaPJ$HVmJ$u1k&q#dahWlvzUp!-1DWg}E;F9#}qx{R)*r z8v8=^Oq3@5o^;V4?-|Ci)U$cAj5DEUWvbUr`=Qr^Q@dL3fzIx})aukqau6rIIUh?^ zB+>Yyw|cdVqsUkIIVV5h19nkS?-0zQsL1_5AMW}%^*v}JcR8$F!5a@~A^F zA6&06USC@%^V#YmEq1TiV_XI4jF*}4>$VzFz)9t;$5m-fVVsIM&{Jyq__tN5t;55E zT`P8{5qH%bN8JNe&Gp^dH<0S>PxXID98>mAXfYGc%r50jw>!&P7Q~L=cbjf*^$jk1 zeFJ`JYx|v%;e}1tL4e2B@!a{wdFYf5s__&5U-ZiAloq8MhIv|)?l0zPQMz53r$xevMa?72DI-z3{g|gk74C26X;Jg8@RX6L(l65H!B2TluLxOGmk0asb2j6a zw|)IR-JD{x#W4ru8wu#LnZPqzjRvXhQ%^WWU*yy$2}HAaj#IB6$LsKyajQs8KY*d9 z6|G;r578hR>8Za<@73t6{#$S#NbMri)$G2>%IrP8^=CWdn}z(}GrmLM9`jcT{F`jo zj$8dR6bM?*bTxl2Wc@b@{8`S!%>rM<{3ir{Cd=O|@bzr>VS#^;^Z%5<$zN(;F7K>en;T%v-}SPPA^}n{mgVV{l{7U*8(rH{{I&E#mw7Mw|Rb#^(VNuc$L>> zsleZ6`~w1in*B)${9}yUyjuPDu|J!Hd@J+Y1pYB3-j|==g_WyZ-FJ$?b1b!XMzasD}IM1&N{0Hpk ze+v9*o z_?e7THw1Ge?j0OE7t?+E-H z&VK{v$*#)_?2q}5HG6KXly#2jdA@Hwpy!`^F4@T6s3;egNe@x)tVm-dVKg)PU z;3v5LZWFlAc0VofMa=C%Fn~cEi`E#eh^*0V=;;6ts$o2V{z+0HN^=0#LFW1R)LcWdhzZLii#$Oir zyS(oIEO1+Y|0eLyv7Uu^Sxn9P^AOj4O5i_Zd{E%mn(1nbz$Y2sCGc&mXRpBTVtk*# z&A&z|H6`$0vj6u8d<*Z32L#^D^2Y>zko`O^@Vgm*Uf}k@`Xzxkv;J2Eeg@aWF9mMT zySD|tnC0XA@MhP=K8i09_zc_a68Nv!{|f~^#kl!)JiG3H%6Z!)z-iw4uRYJcM1G1j;mYXyE)H; z0=MfjBJh7*E~~xb;(|f&-JGmqs5}Og~|%5U;aTN`GcbrGr4F zDt^IBW&Lz@9Iv`_C5&m>OQ$P%%UeI}RlFj;hs?q7UBtIjU_zzv9(NL--&CrIZ!{@< z?!h-2dN*wp`4eugLSIh)U)nNgphik|F%nw`cI3pIR@!I7@;iIX<57A0wu%M<;dC zNC&@Sy-5rT7XSS@|NJ`^k`~xEUF|C8Z^y`d{-3A{{I4o CBcMV6 literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/fbsdattr.static.d b/setup/xar-1.5.2/lib/fbsdattr.static.d new file mode 100644 index 0000000..9bb9b6d --- /dev/null +++ b/setup/xar-1.5.2/lib/fbsdattr.static.d @@ -0,0 +1,23 @@ +fbsdattr.o: lib/fbsdattr.c include/config.h include/xar.h lib/arcmod.h \ + lib/filetree.h /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/b64.h lib/io.h \ + lib/archive.h diff --git a/setup/xar-1.5.2/lib/fbsdattr.static.o b/setup/xar-1.5.2/lib/fbsdattr.static.o new file mode 100644 index 0000000000000000000000000000000000000000..d20e97f6136b50f9d8b4bfd92302890926fbf207 GIT binary patch literal 12472 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 + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#define _FILE_OFFSET_BITS 64 + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include "xar.h" +#include "filetree.h" +#include "archive.h" +#include "b64.h" +#include "ea.h" + +/* Overview: + * xar_file_t's exist within a xar_archive_t. xar_prop_t's exist + * within xar_file_t's and xar_attr_t's exist within xar_prop_t's + * and xar_file_t's. + * Basically, a xar_file_t is a container for xar_prop_t's. + * xar_attr_t's are things like: blah + * In this example, foo is the key of a xar_prop_t, and blah is + * the value. bar is the key of a xar_attr_t which is part of + * foo's xar_prop_t, and 5 is bar's value. + * xar_file_t's have xar_attr_t's for the case of: + * + * The file has an attribute of "id" with a value of "42". + */ + +struct __xar_iter_t { + const void *iter; + char *path; + void *node; + int nochild; +}; + +/* Convenience macros for dereferencing the structs */ +#define XAR_ITER(x) ((struct __xar_iter_t *)(x)) + +/* xar_attr_prop + * Returns: a newly allocated and initialized property attribute. + * It is the caller's responsibility to associate the attribute + * with either a file or a property. + */ +xar_attr_t xar_attr_new(void) { + xar_attr_t ret; + + ret = malloc(sizeof(struct __xar_attr_t)); + if(!ret) return NULL; + + XAR_ATTR(ret)->key = NULL; + XAR_ATTR(ret)->value = NULL; + XAR_ATTR(ret)->next = NULL; + XAR_ATTR(ret)->ns = NULL; + return ret; +} + +int32_t xar_attr_pset(xar_file_t f, xar_prop_t p, const char *key, const char *value) { + xar_attr_t a, i; + if( !p ) { + a = XAR_FILE(f)->attrs; + } else { + a = XAR_PROP(p)->attrs; + } + + if( !a ) { + a = xar_attr_new(); + if(!p) + XAR_FILE(f)->attrs = a; + else + XAR_PROP(p)->attrs = a; + XAR_ATTR(a)->key = strdup(key); + XAR_ATTR(a)->value = strdup(value); + return 0; + } + + for(i = a; i && XAR_ATTR(i)->next; i = XAR_ATTR(i)->next) { + if(strcmp(XAR_ATTR(i)->key, key)==0) { + free((char*)XAR_ATTR(i)->value); + XAR_ATTR(i)->value = strdup(value); + return 0; + } + } + a = xar_attr_new(); + if(!p) { + XAR_ATTR(a)->next = XAR_ATTR(XAR_FILE(f)->attrs); + XAR_FILE(f)->attrs = a; + } else { + XAR_ATTR(a)->next = XAR_ATTR(XAR_PROP(p)->attrs); + XAR_PROP(p)->attrs = a; + } + XAR_ATTR(a)->key = strdup(key); + XAR_ATTR(a)->value = strdup(value); + return 0; +} + +/* xar_attr_set + * f: the file the attribute is associated with + * prop: The property key the attribute is associated with. This can + * be NULL to signify the attribute should be set for the file, + * rather than the property. + * key: The name of the attribute to set. + * value: The value of the attribute. + * Returns: 0 on success, -1 on failure. + * Summary: Basically, sets an attribute. The only tricky part is + * it can set an attribute on a property or a file. + */ +int32_t xar_attr_set(xar_file_t f, const char *prop, const char *key, const char *value) { + if( !prop ) { + return xar_attr_pset(f, NULL, key, value); + } else { + xar_prop_t p = NULL; + p = xar_prop_find(XAR_FILE(f)->props, prop); + if( !p ) return -1; + return xar_attr_pset(f, p, key, value); + } +} + +const char *xar_attr_pget(xar_file_t f, xar_prop_t p, const char *key) { + xar_attr_t a, i; + + if( !p ) + a = XAR_FILE(f)->attrs; + else + a = XAR_PROP(p)->attrs; + + if( !a ) return NULL; + + for(i = a; i && XAR_ATTR(i)->next; i = XAR_ATTR(i)->next) { + if(strcmp(XAR_ATTR(i)->key, key)==0) { + return XAR_ATTR(i)->value; + } + } + if( i && (strcmp(XAR_ATTR(i)->key, key)==0)) + return XAR_ATTR(i)->value; + return NULL; +} + +/* xar_attr_get + * f: file to find the associated attribute in + * prop: name of the property the attribute is of. May be NULL to specify + * the file's attributes. + * key: name of the attribute to search for. + * Returns: a reference to the value of the attribute. + */ +const char *xar_attr_get(xar_file_t f, const char *prop, const char *key) { + if( !prop ) + return xar_attr_pget(f, NULL, key); + else { + xar_prop_t p = NULL; + p = xar_prop_find(XAR_FILE(f)->props, prop); + if( !p ) return NULL; + return xar_attr_pget(f, p, key); + } +} + +/* xar_attr_free + * a: attribute to free + * Summary: frees the attribute structure and everything inside it. + * It is the caller's responsibility to ensure the linked list gets + * updated. This will *not* do anything to ensure the consistency + * of the attribute linked list. + */ +void xar_attr_free(xar_attr_t a) { + if(!a) return; + free((char*)XAR_ATTR(a)->key); + free((char*)XAR_ATTR(a)->value); + free(XAR_ATTR(a)); + return; +} + +/* xar_attr_first + * f: file to associate the iterator with + * prop: the name of the property within the file to associate the iterator with + * i: an iterator as returned by xar_iter_new + * Returns: a pointer to the value of the first attribute associated with the + * property 'prop' associated with the file 'f' + * Summary: This MUST be called prior to calling xar_attr_next, + * to iterate over the attributes of property key 'prop'. + */ +const char *xar_attr_first(xar_file_t f, const char *prop, xar_iter_t i) { + xar_prop_t p = NULL; + xar_attr_t a; + + if( !prop ) + a = XAR_FILE(f)->attrs; + else { + p = xar_prop_find(XAR_FILE(f)->props, prop); + if( !p ) return NULL; + a = XAR_PROP(p)->attrs; + } + + if( !a ) return NULL; + + XAR_ITER(i)->iter = a; + free(XAR_ITER(i)->node); + XAR_ITER(i)->node = strdup(XAR_ATTR(a)->key); + return XAR_ITER(i)->node; +} + +/* xar_attr_next + * i: iterator allocated by xar_iter_new, and initialized with xar_attr_first + * Returns: a pointer to the key of the next attribute associated with + * the iterator. NULL will be returned when there are no more attributes + * to find. + */ +const char *xar_attr_next(xar_iter_t i) { + xar_attr_t a = XAR_ITER(i)->iter; + + if( XAR_ATTR(a)->next == NULL ) + return NULL; + + XAR_ITER(i)->iter = XAR_ATTR(a)->next; + free(XAR_ITER(i)->node); + XAR_ITER(i)->node = strdup(XAR_ATTR(XAR_ITER(i)->iter)->key); + return XAR_ITER(i)->node; +} + +/* xar_iter_new + * Returns a newly allocated iterator for use on files, properties, or + * attributes. + */ +xar_iter_t xar_iter_new() { + xar_iter_t ret = malloc(sizeof(struct __xar_iter_t)); + if(!ret) return NULL; + + XAR_ITER(ret)->iter = NULL; + XAR_ITER(ret)->path = NULL; + XAR_ITER(ret)->node = NULL; + XAR_ITER(ret)->nochild = 0; + return ret; +} + +/* xar_iter_free + * Frees memory associated with the specified iterator + */ +void xar_iter_free(xar_iter_t i) { + free(XAR_ITER(i)->node); + free(XAR_ITER(i)); +} + +const char *xar_prop_getkey(xar_prop_t p) { + return XAR_PROP(p)->key; +} +const char *xar_prop_getvalue(xar_prop_t p) { + return XAR_PROP(p)->value; +} +int32_t xar_prop_setkey(xar_prop_t p, const char *key) { + free((char *)XAR_PROP(p)->key); + if(key) + XAR_PROP(p)->key = strdup(key); + return 0; +} +int32_t xar_prop_setvalue(xar_prop_t p, const char *value) { + free((char *)XAR_PROP(p)->value); + if(value) + XAR_PROP(p)->value = strdup(value); + return 0; +} + +/* xar_prop_pfirst + * f: file to retrieve the first property from + * Returns: a xar_prop_t corresponding to the first xar_prop_t associated with f + * NULL if there are no properties associated with the file. + */ +xar_prop_t xar_prop_pfirst(xar_file_t f) { + return XAR_FILE(f)->props; +} + +/* xar_prop_pnext + * p: previous property used to retrieve the next + * Returns: a xar_prop_t if there is a next, NULL otherwise + */ +xar_prop_t xar_prop_pnext(xar_prop_t p) { + return XAR_PROP(p)->next; +} + +/* xar_prop_first + * f: file to associate the iterator with + * i: an iterator as returned by xar_iter_new + * Returns: a pointer to the value of the first property associated with + * the file 'f'. + * Summary: This MUST be called first prior to calling xar_prop_next, + * to iterate over properties of file 'f'. This has the side effect of + * associating the iterator with the file's properties, which is needed + * before xar_prop_next. + */ +const char *xar_prop_first(xar_file_t f, xar_iter_t i) { + XAR_ITER(i)->iter = XAR_FILE(f)->props; + free(XAR_ITER(i)->node); + XAR_ITER(i)->node = strdup(XAR_PROP(XAR_ITER(i)->iter)->key); + return XAR_ITER(i)->node; +} + +/* xar_prop_next + * i: iterator allocated by xar_iter_new, and initialized with xar_prop_first + * Returns: a pointer to the value of the next property associated with + * the iterator. NULL will be returned when there are no more properties + * to find. If a property has a NULL value, the string "" will be returned. + * This will recurse down child properties, flattening the namespace and + * adding separators. For instance a1->b1->c1, a1 will first be returned, + * the subsequent call will return "a1/b1", and the next call will return + * "a1/b1/c1", etc. + */ +const char *xar_prop_next(xar_iter_t i) { + xar_prop_t p = XAR_ITER(i)->iter; + if( !(XAR_ITER(i)->nochild) && XAR_PROP(p)->children ) { + char *tmp = XAR_ITER(i)->path; + if( tmp ) { + asprintf(&XAR_ITER(i)->path, "%s/%s", tmp, XAR_PROP(p)->key); + free(tmp); + } else + XAR_ITER(i)->path = strdup(XAR_PROP(p)->key); + XAR_ITER(i)->iter = p = XAR_PROP(p)->children; + goto SUCCESS; + } + XAR_ITER(i)->nochild = 0; + + if( XAR_PROP(p)->next ) { + XAR_ITER(i)->iter = p = XAR_PROP(p)->next; + goto SUCCESS; + } + + if( XAR_PROP(p)->parent ) { + char *tmp1, *tmp2; + char *dname; + + if( strstr(XAR_ITER(i)->path, "/") ) { + tmp1 = tmp2 = XAR_ITER(i)->path; + dname = dirname(tmp2); + XAR_ITER(i)->path = strdup(dname); + free(tmp1); + } else { + free(XAR_ITER(i)->path); + XAR_ITER(i)->path = NULL; + } + + XAR_ITER(i)->iter = p = XAR_PROP(p)->parent; + XAR_ITER(i)->nochild = 1; + return xar_prop_next(i); + } + + return NULL; +SUCCESS: + free(XAR_ITER(i)->node); + if( XAR_ITER(i)->path ) + asprintf((char **)&XAR_ITER(i)->node, "%s/%s", XAR_ITER(i)->path, XAR_PROP(p)->key); + else { + if(XAR_PROP(p)->key == NULL) + XAR_ITER(i)->node = strdup(""); + else + XAR_ITER(i)->node = strdup(XAR_PROP(p)->key); + } + return XAR_ITER(i)->node; +} + +/* xar_prop_new + * f: file to associate the new file with. May not be NULL + * parent: the parent property of the new property. May be NULL + * Returns: a newly allocated and initialized property. + * Summary: in addition to allocating the new property, it + * will be inserted into the parent node's list of children, + * and/or added to the file's list of properties, as appropriate. + */ +xar_prop_t xar_prop_new(xar_file_t f, xar_prop_t parent) { + xar_prop_t p; + + p = malloc(sizeof(struct __xar_prop_t)); + if( !p ) return NULL; + + XAR_PROP(p)->key = NULL; + XAR_PROP(p)->value = NULL; + XAR_PROP(p)->children = NULL; + XAR_PROP(p)->next = NULL; + XAR_PROP(p)->attrs = NULL; + XAR_PROP(p)->parent = parent; + XAR_PROP(p)->file = f; + XAR_PROP(p)->prefix = XAR_FILE(f)->prefix; + XAR_PROP(p)->ns = NULL; + if(parent) { + if( !XAR_PROP(parent)->children ) { + XAR_PROP(parent)->children = p; + } else { + XAR_PROP(p)->next = XAR_PROP(parent)->children; + XAR_PROP(parent)->children = p; + } + } else { + if( XAR_FILE(f)->props == NULL ) { + XAR_FILE(f)->props = p; + } else { + XAR_PROP(p)->next = XAR_FILE(f)->props; + XAR_FILE(f)->props = p; + } + } + + return p; +} + +/* xar_prop_find + * p: property to check + * key: name of property to find. + * Returns: reference to the property with the specified key + * Summary: A node's name may be specified by a path, such as + * "a1/b1/c1", and child nodes will be searched for each + * "/" separator. + */ +xar_prop_t xar_prop_find(xar_prop_t p, const char *key) { + xar_prop_t i, ret; + char *tmp1, *tmp2, *tmp3; + + if( !p ) return NULL; + tmp2 = tmp1 = strdup(key); + tmp3 = strsep(&tmp2, "/"); + i = p; + do { + if( strcmp(tmp3, XAR_PROP(i)->key) == 0 ) { + if( tmp2 == NULL ) { + free(tmp1); + return i; + } + ret = xar_prop_find(XAR_PROP(i)->children, tmp2); + free(tmp1); + return ret; + } + i = XAR_PROP(i)->next; + } while(i); + free(tmp1); + return NULL; +} + +/* xar_prop_set_r + * p: property to recurse down and set the property of + * key: key of the property to set + * value: desired value of the property + * Returns: 0 on sucess, -1 on failure. + * Summary: This is an internal helper function for xar_prop_set() which + * does the recursion down the property tree. + */ +static xar_prop_t xar_prop_set_r(xar_file_t f, xar_prop_t p, const char *key, const char *value, int overwrite) { + xar_prop_t i, ret, ret2, start; + char *tmp1, *tmp2, *tmp3; + + tmp2 = tmp1 = strdup(key); + tmp3 = strsep(&tmp2, "/"); + + if( !p ) { + start = XAR_FILE(f)->props; + } else { + start = XAR_PROP(p)->children; + } + + for( i = start; i; i = XAR_PROP(i)->next ) { + if( strcmp(tmp3, XAR_PROP(i)->key) == 0 ) { + if( !tmp2 ) { + if( overwrite ) { + xar_prop_setvalue(i, value); + free(tmp1); + return i; + } else { + ret = xar_prop_new(f, p); + if( !ret ) { + free(tmp1); + return ret; + } + xar_prop_setvalue(ret, value); + xar_prop_setkey(ret, tmp3); + free(tmp1); + return ret; + } + } + + ret2 = xar_prop_set_r(f, i, tmp2, value, overwrite); + free(tmp1); + return ret2; + } + } + + ret = xar_prop_new(f, p); + if( !ret ) { + free(tmp1); + return ret; + } + + if( !tmp2 ) { + xar_prop_setvalue(ret, value); + xar_prop_setkey(ret, tmp3); + free(tmp1); + return ret; + } + + xar_prop_setkey(ret, tmp3); + xar_prop_setvalue(ret, NULL); + + ret2 = xar_prop_set_r(f, ret, tmp2, value, overwrite); + free(tmp1); + return ret2; +} + +/* xar_prop_set + * f: file to set the property on + * key: key of the property to set + * value: desired value of the property + * Returns: 0 on success, -1 on failure + * Summary: If the property already exists, its value is overwritten + * by 'value'. If the property does not exist, it is created. + * Copies of key and value are kept in the tree. The caller may do + * what they wish with these values after the call returns. + * References to these copies will be returned by iterating over + * the properties, or by calling xar_prop_get(). + * These copies will be released when the property is released. + * + * Note that you *CANNOT* have a node with a value and children. + * This implementation will let you, but the serialization to xml + * will not be what you're hoping for. + */ +int32_t xar_prop_set(xar_file_t f, const char *key, const char *value) { + if( xar_prop_set_r(f, NULL, key, value, 1) ) + return 0; + return -1; +} + +/* xar_prop_pset + * Same as xar_prop_set, except it takes a xar_prop_t which will be + * treated as the root property. + * Returns a xar_prop_t that was created or set. Returns NULL if error. + */ +xar_prop_t xar_prop_pset(xar_file_t f, xar_prop_t p, const char *key, const char *value) { + return xar_prop_set_r(f, p, key, value, 1); +} + +/* xar_prop_create + * Identical to xar_prop_set, except it will not overwrite an existing + * property, it will create another one. + */ +int32_t xar_prop_create(xar_file_t f, const char *key, const char *value) { + if( xar_prop_set_r(f, NULL, key, value, 0) ) + return 0; + return -1; +} + +/* xar_prop_get + * f: file to look for the property in + * key: name of property to find. + * value: on return, *value will point to the value of the property + * value may be NULL, in which case, only the existence of the property + * is tested. + * Returns: 0 for success, -1 on failure + * Summary: A node's name may be specified by a path, such as + * "a1/b1/c1", and child nodes will be searched for each + * "/" separator. + */ +int32_t xar_prop_get(xar_file_t f, const char *key, const char **value) { + xar_prop_t r = xar_prop_find(XAR_FILE(f)->props, key); + if( !r ) { + if(value) + *value = NULL; + return -1; + } + if(value) + *value = XAR_PROP(r)->value; + return 0; +} + +xar_prop_t xar_prop_pget(xar_prop_t p, const char *key) { + char *tmp; + const char *k; + xar_prop_t ret; + k = XAR_PROP(p)->key; + asprintf(&tmp, "%s/%s", k, key); + ret = xar_prop_find(p, tmp); + free(tmp); + return ret; +} + +/* xar_prop_replicate_r +* f: file to attach property +* p: property (list) to iterate and add +* parent: parent property +* Summary: Recursivley adds property list (p) to file (f) and parent (parent). +*/ + +void xar_prop_replicate_r(xar_file_t f, xar_prop_t p, xar_prop_t parent ) +{ + xar_prop_t property = p; + + /* look through properties */ + for( property = p; property; property = property->next ){ + xar_prop_t newprop = xar_prop_new( f, parent ); + + /* copy the key value for the property */ + XAR_PROP(newprop)->key = strdup(property->key); + if(property->value) + XAR_PROP(newprop)->value = strdup(property->value); + + /* loop through the attributes and copy them */ + xar_attr_t a = NULL; + xar_attr_t last = NULL; + + /* copy attributes for file */ + for(a = property->attrs; a; a = a->next) { + if( NULL == newprop->attrs ){ + last = xar_attr_new(); + XAR_PROP(newprop)->attrs = last; + }else{ + XAR_ATTR(last)->next = xar_attr_new(); + last = XAR_ATTR(last)->next; + } + + XAR_ATTR(last)->key = strdup(a->key); + if(a->value) + XAR_ATTR(last)->value = strdup(a->value); + } + + /* loop through the children properties and recursively add them */ + xar_prop_replicate_r(f, property->children, newprop ); + } + +} + +/* xar_prop_free + * p: property to free + * Summary: frees the specified property and all its children. + * Stored copies of the key and value will be released, as will + * all attributes. + */ +void xar_prop_free(xar_prop_t p) { + xar_prop_t i; + xar_attr_t a; + while( XAR_PROP(p)->children ) { + i = XAR_PROP(p)->children; + XAR_PROP(p)->children = XAR_PROP(i)->next; + xar_prop_free(i); + } + while(XAR_PROP(p)->attrs) { + a = XAR_PROP(p)->attrs; + XAR_PROP(p)->attrs = XAR_ATTR(a)->next; + xar_attr_free(a); + } + free((char*)XAR_PROP(p)->key); + free((char*)XAR_PROP(p)->value); + free(XAR_PROP(p)); +} + +void xar_prop_punset(xar_file_t f, xar_prop_t p) { + xar_prop_t i; + if( !p ) { + return; + } + if( XAR_PROP(p)->parent ) { + i = XAR_PROP(p)->parent->children; + if( i == p ) { + XAR_PROP(XAR_PROP(p)->parent)->children = XAR_PROP(p)->next; + xar_prop_free(p); + return; + } + } else { + i = XAR_FILE(f)->props; + if( i == p ) { + XAR_FILE(f)->props = XAR_PROP(p)->next; + xar_prop_free(p); + return; + } + } + + while( i && (XAR_PROP(i)->next != XAR_PROP(p)) ) { + i = XAR_PROP(i)->next; + } + if( i && (XAR_PROP(i)->next == XAR_PROP(p)) ) { + XAR_PROP(i)->next = XAR_PROP(p)->next; + xar_prop_free(p); + } + return; +} + +void xar_prop_unset(xar_file_t f, const char *key) { + xar_prop_t r = xar_prop_find(XAR_FILE(f)->props, key); + + xar_prop_punset(f, r); + return; +} + +/* xar_file_new + * f: parent file of the file to be created. May be NULL + * Returns: a newly allocated file structure. + */ +xar_file_t xar_file_new(xar_file_t f) { + xar_file_t ret, i; + + ret = calloc(1, sizeof(struct __xar_file_t)); + if(!ret) return NULL; + + XAR_FILE(ret)->parent = f; + XAR_FILE(ret)->next = NULL; + XAR_FILE(ret)->children = NULL; + XAR_FILE(ret)->props = NULL; + XAR_FILE(ret)->attrs = NULL; + XAR_FILE(ret)->prefix = NULL; + XAR_FILE(ret)->ns = NULL; + XAR_FILE(ret)->fspath = NULL; + XAR_FILE(ret)->eas = NULL; + XAR_FILE(ret)->nexteaid = 0; + if( f ) { + if( !XAR_FILE(f)->children ) { + XAR_FILE(f)->children = ret; + } else { + for(i = XAR_FILE(f)->children; XAR_FILE(i)->next; i = XAR_FILE(i)->next); + XAR_FILE(i)->next = ret; + } + } + + return ret; +} + +xar_file_t xar_file_replicate(xar_file_t original, xar_file_t newparent) +{ + xar_file_t ret = xar_file_new(newparent); + xar_attr_t a; + + /* copy attributes for file */ + for(a = XAR_FILE(original)->attrs; a; a = XAR_ATTR(a)->next) { + /* skip the id attribute */ + if( 0 == strcmp(a->key, "id" ) ) + continue; + + xar_attr_set(ret, NULL , a->key, a->value ); + } + + /* recursively copy properties */ + xar_prop_replicate_r(ret, XAR_FILE(original)->props, NULL); + + return ret; +} + +/* xar_file_free + * f: file to free + * Summary: frees the specified file and all children, + * properties, and attributes associated with the file. + */ +void xar_file_free(xar_file_t f) { + xar_file_t i; + xar_prop_t n; + xar_attr_t a; + while(XAR_FILE(f)->children) { + i = XAR_FILE(f)->children; + XAR_FILE(f)->children = XAR_FILE(i)->next; + xar_file_free(i); + } + while(XAR_FILE(f)->props) { + n = XAR_FILE(f)->props; + XAR_FILE(f)->props = XAR_PROP(n)->next; + xar_prop_free(n); + } + while(XAR_FILE(f)->attrs) { + a = XAR_FILE(f)->attrs; + XAR_FILE(f)->attrs = XAR_ATTR(a)->next; + xar_attr_free(a); + } + free((char *)XAR_FILE(f)->fspath); + free(XAR_FILE(f)); +} + +/* xar_file_first + * x: archive to associate the iterator with + * i: an iterator as returned by xar_iter_new + * Returns: a pointer to the name of the first file associated with + * the archive 'x'. + * Summary: This MUST be called first prior to calling xar_file_next, + * to iterate over files of archive 'x'. This has the side effect of + * associating the iterator with the archive's files, which is needed + * before xar_file_next. + */ +xar_file_t xar_file_first(xar_t x, xar_iter_t i) { + XAR_ITER(i)->iter = XAR(x)->files; + free(XAR_ITER(i)->node); + return XAR_ITER(i)->iter; +} + +/* xar_file_next + * i: iterator allocated by xar_iter_new, and initialized with xar_file_first + * Returns: a pointer to the name of the next file associated with + * the iterator. NULL will be returned when there are no more files + * to find. + * This will recurse down child files (directories), flattening the + * namespace and adding separators. For instance a1->b1->c1, a1 will + * first be returned, the subsequent call will return "a1/b1", and the + * next call will return "a1/b1/c1", etc. + */ +xar_file_t xar_file_next(xar_iter_t i) { + xar_file_t f = XAR_ITER(i)->iter; + const char *name; + if( !(XAR_ITER(i)->nochild) && XAR_FILE(f)->children ) { + char *tmp = XAR_ITER(i)->path; + xar_prop_get(f, "name", &name); + if( tmp ) { + asprintf(&XAR_ITER(i)->path, "%s/%s", tmp, name); + free(tmp); + } else + XAR_ITER(i)->path = strdup(name); + XAR_ITER(i)->iter = f = XAR_FILE(f)->children; + goto FSUCCESS; + } + XAR_ITER(i)->nochild = 0; + + if( XAR_FILE(f)->next ) { + XAR_ITER(i)->iter = f = XAR_FILE(f)->next; + goto FSUCCESS; + } + + if( XAR_FILE(f)->parent ) { + char *tmp1, *tmp2; + char *dname; + + if( strstr(XAR_ITER(i)->path, "/") ) { + tmp1 = tmp2 = XAR_ITER(i)->path; + dname = dirname(tmp2); + XAR_ITER(i)->path = strdup(dname); + free(tmp1); + } else { + free(XAR_ITER(i)->path); + XAR_ITER(i)->path = NULL; + } + + XAR_ITER(i)->iter = f = XAR_FILE(f)->parent; + XAR_ITER(i)->nochild = 1; + return xar_file_next(i); + } + + return NULL; +FSUCCESS: + xar_prop_get(f, "name", &name); + XAR_ITER(i)->iter = (void *)f; + + return XAR_ITER(i)->iter; +} + +/* xar_file_find + * f: file subtree to look under + * path: path to file to find + * Returns the file_t describing the file, or NULL if not found. + */ +xar_file_t xar_file_find(xar_file_t f, const char *path) { + xar_file_t i, ret; + char *tmp1, *tmp2, *tmp3; + + if( !f ) return NULL; + tmp2 = tmp1 = strdup(path); + tmp3 = strsep(&tmp2, "/"); + i = f; + do { + const char *name; + xar_prop_get(i, "name", &name); + if( name == NULL ) continue; + if( strcmp(tmp3, name) == 0 ) { + if( tmp2 == NULL ) { + free(tmp1); + return i; + } + ret = xar_file_find(XAR_FILE(i)->children, tmp2); + free(tmp1); + return ret; + } + i = XAR_FILE(i)->next; + } while(i); + free(tmp1); + return NULL; +} + + +/* xar_prop_serialize + * p: property to serialize + * writer: the xmlTextWriterPtr allocated by xmlNewTextWriter*() + * Summary: recursively serializes the property passed to it, including + * children, siblings, attributes, etc. + */ +void xar_prop_serialize(xar_prop_t p, xmlTextWriterPtr writer) { + xar_prop_t i; + xar_attr_t a; + + if( !p ) + return; + i = p; + do { + if( XAR_PROP(i)->prefix || XAR_PROP(i)->ns ) + xmlTextWriterStartElementNS(writer, BAD_CAST(XAR_PROP(i)->prefix), BAD_CAST(XAR_PROP(i)->key), NULL); + else + xmlTextWriterStartElement(writer, BAD_CAST(XAR_PROP(i)->key)); + for(a = XAR_PROP(i)->attrs; a; a = XAR_ATTR(a)->next) { + xmlTextWriterWriteAttributeNS(writer, BAD_CAST(XAR_ATTR(a)->ns), BAD_CAST(XAR_ATTR(a)->key), NULL, BAD_CAST(XAR_ATTR(a)->value)); + } + if( XAR_PROP(i)->value ) { + if( strcmp(XAR_PROP(i)->key, "name") == 0 ) { + unsigned char *tmp; + int outlen = strlen(XAR_PROP(i)->value); + int inlen, len; + + inlen = len = outlen; + + tmp = malloc(len); + assert(tmp); + if( UTF8Toisolat1(tmp, &len, BAD_CAST(XAR_PROP(i)->value), &inlen) < 0 ) { + xmlTextWriterWriteAttribute(writer, BAD_CAST("enctype"), BAD_CAST("base64")); + xmlTextWriterWriteBase64(writer, XAR_PROP(i)->value, 0, strlen(XAR_PROP(i)->value)); + } else + xmlTextWriterWriteString(writer, BAD_CAST(XAR_PROP(i)->value)); + free(tmp); + } else + xmlTextWriterWriteString(writer, BAD_CAST(XAR_PROP(i)->value)); + } + + if( XAR_PROP(i)->children ) { + xar_prop_serialize(XAR_PROP(i)->children, writer); + } + xmlTextWriterEndElement(writer); + + i = XAR_PROP(i)->next; + } while(i); +} + +/* xar_file_serialize + * f: file to serialize + * writer: the xmlTextWriterPtr allocated by xmlNewTextWriter*() + * Summary: recursively serializes the file passed to it, including + * children, siblings, properties, attributes, etc. + */ +void xar_file_serialize(xar_file_t f, xmlTextWriterPtr writer) { + xar_file_t i; + xar_attr_t a; + + i = f; + do { + xmlTextWriterStartElement(writer, BAD_CAST("file")); + for(a = XAR_FILE(i)->attrs; a; a = XAR_ATTR(a)->next) { + xmlTextWriterWriteAttribute(writer, BAD_CAST(XAR_ATTR(a)->key), BAD_CAST(XAR_ATTR(a)->value)); + } + xar_prop_serialize(XAR_FILE(i)->props, writer); + if( XAR_FILE(i)->children ) + xar_file_serialize(XAR_FILE(i)->children, writer); + xmlTextWriterEndElement(writer); + i = XAR_FILE(i)->next; + } while(i); + return; +} + +/* xar_prop_unserialize + * f: file the property is to belong to + * p: parent property, may be NULL + * reader: xmlTextReaderPtr already allocated + */ +int32_t xar_prop_unserialize(xar_file_t f, xar_prop_t parent, xmlTextReaderPtr reader) { + const char *name, *value, *ns; + int type, i, isempty = 0; + int isname = 0, isencoded = 0; + xar_prop_t p; + + p = xar_prop_new(f, parent); + if( xmlTextReaderIsEmptyElement(reader) ) + isempty = 1; + i = xmlTextReaderAttributeCount(reader); + name = (const char *)xmlTextReaderConstLocalName(reader); + XAR_PROP(p)->key = strdup(name); + ns = (const char *)xmlTextReaderConstPrefix(reader); + if( ns ) XAR_PROP(p)->prefix = strdup(ns); + if( strcmp(name, "name") == 0 ) + isname = 1; + if( i > 0 ) { + for(i = xmlTextReaderMoveToFirstAttribute(reader); i == 1; i = xmlTextReaderMoveToNextAttribute(reader)) { + xar_attr_t a; + const char *name = (const char *)xmlTextReaderConstLocalName(reader); + const char *value = (const char *)xmlTextReaderConstValue(reader); + const char *ns = (const char *)xmlTextReaderConstPrefix(reader); + if( isname && (strcmp(name, "enctype") == 0) && (strcmp(value, "base64") == 0) ) { + isencoded = 1; + } else { + a = xar_attr_new(); + XAR_ATTR(a)->key = strdup(name); + XAR_ATTR(a)->value = strdup(value); + if(ns) XAR_ATTR(a)->ns = strdup(ns); + XAR_ATTR(a)->next = XAR_PROP(p)->attrs; + XAR_PROP(p)->attrs = a; + } + } + } + if( isempty ) + return 0; + while( xmlTextReaderRead(reader) == 1) { + type = xmlTextReaderNodeType(reader); + switch(type) { + case XML_READER_TYPE_ELEMENT: + xar_prop_unserialize(f, p, reader); + break; + case XML_READER_TYPE_TEXT: + value = (const char *)xmlTextReaderConstValue(reader); + free((char*)XAR_PROP(p)->value); + if( isencoded ) + XAR_PROP(p)->value = (const char *)xar_from_base64(BAD_CAST(value), strlen(value)); + else + XAR_PROP(p)->value = strdup(value); + if( isname ) { + if( XAR_FILE(f)->parent ) { + asprintf((char **)&XAR_FILE(f)->fspath, "%s/%s", XAR_FILE(XAR_FILE(f)->parent)->fspath, XAR_PROP(p)->value); + } else { + XAR_FILE(f)->fspath = strdup(XAR_PROP(p)->value); + } + } + break; + case XML_READER_TYPE_END_ELEMENT: + return 0; + break; + } + } + + /* XXX: Should never be reached */ + return 0; +} + +/* xar_file_unserialize + * x: archive we're unserializing to + * parent: The parent file of the file to be unserialized. May be NULL + * reader: The xmlTextReaderPtr we are reading the xml from. + * Summary: Takes a node, and adds all attributes, child properties, + * and child files. + */ +xar_file_t xar_file_unserialize(xar_t x, xar_file_t parent, xmlTextReaderPtr reader) { + xar_file_t ret; + const char *name; + int type, i; + + ret = xar_file_new(parent); + + i = xmlTextReaderAttributeCount(reader); + if( i > 0 ) { + for(i = xmlTextReaderMoveToFirstAttribute(reader); i == 1; i = xmlTextReaderMoveToNextAttribute(reader)) { + xar_attr_t a; + const char *name = (const char *)xmlTextReaderConstLocalName(reader); + const char *value = (const char *)xmlTextReaderConstValue(reader); + a = xar_attr_new(); + XAR_ATTR(a)->key = strdup(name); + XAR_ATTR(a)->value = strdup(value); + XAR_ATTR(a)->next = XAR_FILE(ret)->attrs; + XAR_FILE(ret)->attrs = a; + } + } + + while( xmlTextReaderRead(reader) == 1 ) { + type = xmlTextReaderNodeType(reader); + name = (const char *)xmlTextReaderConstLocalName(reader); + if( (type == XML_READER_TYPE_END_ELEMENT) && (strcmp(name, "file")==0) ) { + const char *opt; + xar_prop_get(ret, "type", &opt); + if( opt && (strcmp(opt, "hardlink") == 0) ) { + opt = xar_attr_get(ret, "type", "link"); + if( opt && (strcmp(opt, "original") == 0) ) { + opt = xar_attr_get(ret, NULL, "id"); + xmlHashAddEntry(XAR(x)->link_hash, BAD_CAST(opt), XAR_FILE(ret)); + } + } + return ret; + } + + if( type == XML_READER_TYPE_ELEMENT ) { + if( strcmp(name, "file")==0 ) { + xar_file_unserialize(x, ret, reader); + } else + xar_prop_unserialize(ret, NULL, reader); + } + } + + /* XXX Should never be reached */ + return ret; +} + diff --git a/setup/xar-1.5.2/lib/filetree.d b/setup/xar-1.5.2/lib/filetree.d new file mode 100644 index 0000000..971c9ed --- /dev/null +++ b/setup/xar-1.5.2/lib/filetree.d @@ -0,0 +1,22 @@ +lib/filetree.o : lib/filetree.c /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h include/config.h include/xar.h \ + lib/filetree.h lib/ea.h lib/archive.h lib/b64.h diff --git a/setup/xar-1.5.2/lib/filetree.h b/setup/xar-1.5.2/lib/filetree.h new file mode 100644 index 0000000..e3fe0bb --- /dev/null +++ b/setup/xar-1.5.2/lib/filetree.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_FILETREE_H_ +#define _XAR_FILETREE_H_ + +#ifndef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#endif + +#include +#include + +struct __xar_attr_t { + const char *key; + const char *value; + const char *ns; + const struct __xar_attr_t *next; +}; +typedef const struct __xar_attr_t *xar_attr_t; + +struct __xar_prop_t { + const char *key; + const char *value; + const struct __xar_prop_t *parent; + const struct __xar_prop_t *children; + const struct __xar_prop_t *next; + const struct __xar_attr_t *attrs; + const struct __xar_file_t *file; + const char *prefix; + const char *ns; +}; +typedef const struct __xar_prop_t *xar_prop_t; + +#include "ea.h" + +struct __xar_file_t { + const struct __xar_prop_t *props; + const struct __xar_attr_t *attrs; + const char *prefix; + const char *ns; + const char *fspath; + char parent_extracted; + const struct __xar_file_t *parent; + const struct __xar_file_t *children; + const struct __xar_file_t *next; + xar_ea_t eas; + uint64_t nexteaid; +}; + +#define XAR_ATTR(x) ((struct __xar_attr_t *)(x)) +#define XAR_FILE(x) ((struct __xar_file_t *)(x)) +#define XAR_PROP(x) ((struct __xar_prop_t *)(x)) + +void xar_file_free(xar_file_t f); +xar_attr_t xar_attr_new(void); +int32_t xar_attr_set(xar_file_t f, const char *prop, const char *key, const char *value); +int32_t xar_attr_pset(xar_file_t f, xar_prop_t p, const char *key, const char *value); +const char *xar_attr_get(xar_file_t f, const char *prop, const char *key); +const char *xar_attr_pget(xar_file_t f, xar_prop_t p, const char *key); +void xar_attr_free(xar_attr_t a); +void xar_file_serialize(xar_file_t f, xmlTextWriterPtr writer); +xar_file_t xar_file_unserialize(xar_t x, xar_file_t parent, xmlTextReaderPtr reader); +xar_file_t xar_file_find(xar_file_t f, const char *path); +xar_file_t xar_file_new(xar_file_t f); +xar_file_t xar_file_replicate(xar_file_t original, xar_file_t newparent); +void xar_file_free(xar_file_t f); + +void xar_prop_serialize(xar_prop_t p, xmlTextWriterPtr writer); +int32_t xar_prop_unserialize(xar_file_t f, xar_prop_t parent, xmlTextReaderPtr reader); +void xar_prop_free(xar_prop_t p); +xar_prop_t xar_prop_new(xar_file_t f, xar_prop_t parent); +xar_prop_t xar_prop_pset(xar_file_t f, xar_prop_t p, const char *key, const char *value); +xar_prop_t xar_prop_find(xar_prop_t p, const char *key); +xar_prop_t xar_prop_pget(xar_prop_t p, const char *key); +const char *xar_prop_getkey(xar_prop_t p); +const char *xar_prop_getvalue(xar_prop_t p); +int32_t xar_prop_setkey(xar_prop_t p, const char *key); +int32_t xar_prop_setvalue(xar_prop_t p, const char *value); +xar_prop_t xar_prop_pfirst(xar_file_t f); +xar_prop_t xar_prop_pnext(xar_prop_t p); +void xar_prop_punset(xar_file_t f, xar_prop_t p); + +#endif /* _XAR_FILETREE_H_ */ diff --git a/setup/xar-1.5.2/lib/filetree.o b/setup/xar-1.5.2/lib/filetree.o new file mode 100644 index 0000000000000000000000000000000000000000..031118b7f637b67fd58904d2c5c123842a837d79 GIT binary patch literal 43304 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 Ckxjw? literal 0 HcmV?d00001 diff --git a/setup/xar-1.5.2/lib/filetree.static.d b/setup/xar-1.5.2/lib/filetree.static.d new file mode 100644 index 0000000..da02670 --- /dev/null +++ b/setup/xar-1.5.2/lib/filetree.static.d @@ -0,0 +1,22 @@ +filetree.o: lib/filetree.c /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h include/config.h include/xar.h \ + lib/filetree.h lib/ea.h lib/archive.h lib/b64.h diff --git a/setup/xar-1.5.2/lib/filetree.static.o b/setup/xar-1.5.2/lib/filetree.static.o new file mode 100644 index 0000000000000000000000000000000000000000..be5cff68772f3a3dffc26b16adaf4b41b1571371 GIT binary patch literal 43184 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 + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + + +#include +#include +#include +#include +#include +#include + +#include "xar.h" +#include "hash.h" +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif + + +struct _hash_context{ + EVP_MD_CTX unarchived_cts; + EVP_MD_CTX archived_cts; + uint8_t unarchived; + uint8_t archived; + uint64_t count; +}; + +#define CONTEXT(x) ((struct _hash_context *)(*x)) + +static char* xar_format_hash(const unsigned char* m,unsigned int len); + +int32_t xar_hash_unarchived(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context) { + return xar_hash_unarchived_out(x,f,p,*in,*inlen,context); +} + +int32_t xar_hash_unarchived_out(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context) { + const char *opt; + const EVP_MD *md; + xar_prop_t tmpp; + + opt = NULL; + tmpp = xar_prop_pget(p, "extracted-checksum"); + if( tmpp ) + opt = xar_attr_pget(f, tmpp, "style"); + + if( !opt ) + opt = xar_opt_get(x, XAR_OPT_FILECKSUM); + + if( !opt || (0 == strcmp(opt, XAR_OPT_VAL_NONE) ) ) + return 0; + + if(!CONTEXT(context)){ + *context = calloc(1,sizeof(struct _hash_context)); + OpenSSL_add_all_digests(); + } + + if( !CONTEXT(context)->unarchived ){ + md = EVP_get_digestbyname(opt); + if( md == NULL ) return -1; + EVP_DigestInit(&(CONTEXT(context)->unarchived_cts), md); + CONTEXT(context)->unarchived = 1; + } + + if( inlen == 0 ) + return 0; + + CONTEXT(context)->count += inlen; + EVP_DigestUpdate(&(CONTEXT(context)->unarchived_cts), in, inlen); + return 0; +} + +int32_t xar_hash_archived(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context) +{ + return xar_hash_archived_in(x,f,p,*in,*inlen,context); +} + +int32_t xar_hash_archived_in(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context) { + const char *opt; + const EVP_MD *md; + xar_prop_t tmpp; + + opt = NULL; + tmpp = xar_prop_pget(p, "archived-checksum"); + if( tmpp ) + opt = xar_attr_pget(f, tmpp, "style"); + + if( !opt ) + opt = xar_opt_get(x, XAR_OPT_FILECKSUM); + + if( !opt || (0 == strcmp(opt, XAR_OPT_VAL_NONE) ) ) + return 0; + + if(!CONTEXT(context)){ + *context = calloc(1,sizeof(struct _hash_context)); + OpenSSL_add_all_digests(); + } + + if ( !CONTEXT(context)->archived ){ + md = EVP_get_digestbyname(opt); + if( md == NULL ) return -1; + EVP_DigestInit(&(CONTEXT(context)->archived_cts), md); + CONTEXT(context)->archived = 1; + } + + if( inlen == 0 ) + return 0; + + CONTEXT(context)->count += inlen; + EVP_DigestUpdate(&(CONTEXT(context)->archived_cts), in, inlen); + return 0; +} + +int32_t xar_hash_done(xar_t x, xar_file_t f, xar_prop_t p, void **context) { + unsigned char hashstr[EVP_MAX_MD_SIZE]; + char *str; + unsigned int len; + xar_prop_t tmpp; + + if(!CONTEXT(context)) + return 0; + + if( CONTEXT(context)->count == 0 ) + goto DONE; + + if( CONTEXT(context)->unarchived ){ + EVP_MD_CTX *ctx = &CONTEXT(context)->unarchived_cts; + const EVP_MD *md = EVP_MD_CTX_md(ctx); + const char *type = EVP_MD_name(md); + + memset(hashstr, 0, sizeof(hashstr)); + EVP_DigestFinal(&(CONTEXT(context)->unarchived_cts), hashstr, &len); + str = xar_format_hash(hashstr,len); + if( f ) { + tmpp = xar_prop_pset(f, p, "extracted-checksum", str); + if( tmpp ) + xar_attr_pset(f, tmpp, "style", type); + } + free(str); + } + + if( CONTEXT(context)->archived ){ + EVP_MD_CTX *ctx = &CONTEXT(context)->archived_cts; + const EVP_MD *md = EVP_MD_CTX_md(ctx); + const char *type = EVP_MD_name(md); + + memset(hashstr, 0, sizeof(hashstr)); + EVP_DigestFinal(&(CONTEXT(context)->archived_cts), hashstr, &len); + str = xar_format_hash(hashstr,len); + if( f ) { + tmpp = xar_prop_pset(f, p, "archived-checksum", str); + if( tmpp ) + xar_attr_pset(f, tmpp, "style", type); + } + free(str); + } + +DONE: + if(*context){ + free(*context); + *context = NULL; + } + + return 0; +} + +static char* xar_format_hash(const unsigned char* m,unsigned int len) { + char* result = malloc((2*len)+1); + char hexValue[3]; + unsigned int itr = 0; + + result[0] = '\0'; + + for(itr = 0;itr < len;itr++){ + sprintf(hexValue,"%02x",m[itr]); + strncat(result,hexValue,2); + } + + return result; +} + +int32_t xar_hash_out_done(xar_t x, xar_file_t f, xar_prop_t p, void **context) { + const char *uncomp = NULL, *uncompstyle = NULL; + unsigned char hashstr[EVP_MAX_MD_SIZE]; + unsigned int len; + char *tmpstr; + const EVP_MD *md; + int32_t err = 0; + xar_prop_t tmpp; + + if(!CONTEXT(context)) + return 0; + + if( CONTEXT(context)->archived ){ + tmpp = xar_prop_pget(p, "archived-checksum"); + if( tmpp ) { + uncompstyle = xar_attr_pget(f, tmpp, "style"); + uncomp = xar_prop_getvalue(tmpp); + } + + md = EVP_get_digestbyname(uncompstyle); + + if( uncomp && uncompstyle && md && CONTEXT(context)->archived ) { + char *str; + memset(hashstr, 0, sizeof(hashstr)); + EVP_DigestFinal(&(CONTEXT(context)->archived_cts), hashstr, &len); + str = xar_format_hash(hashstr,len); + if(strcmp(uncomp, str) != 0) { + xar_err_new(x); + xar_err_set_file(x, f); + asprintf(&tmpstr, "archived-checksum %s's do not match",uncompstyle); + xar_err_set_string(x, tmpstr); + xar_err_callback(x, XAR_SEVERITY_FATAL, XAR_ERR_ARCHIVE_EXTRACTION); + err = -1; + } + free(str); + } + } + + if( CONTEXT(context)->unarchived ) + EVP_DigestFinal(&(CONTEXT(context)->unarchived_cts), hashstr, &len); + + if(*context){ + free(*context); + *context = NULL; + } + + return err; +} diff --git a/setup/xar-1.5.2/lib/hash.d b/setup/xar-1.5.2/lib/hash.d new file mode 100644 index 0000000..f09492c --- /dev/null +++ b/setup/xar-1.5.2/lib/hash.d @@ -0,0 +1,22 @@ +lib/hash.o : lib/hash.c include/xar.h lib/hash.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h include/config.h diff --git a/setup/xar-1.5.2/lib/hash.h b/setup/xar-1.5.2/lib/hash.h new file mode 100644 index 0000000..d329f14 --- /dev/null +++ b/setup/xar-1.5.2/lib/hash.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_HASH_H_ +#define _XAR_HASH_H_ + +#include "filetree.h" + +int32_t xar_hash_archived(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +int32_t xar_hash_archived_in(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context); + +int32_t xar_hash_unarchived(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +int32_t xar_hash_unarchived_out(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context); + +int32_t xar_hash_done(xar_t x, xar_file_t f, xar_prop_t p, void **context); +int32_t xar_hash_out_done(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +#endif /* _XAR_HASH_H_ */ diff --git a/setup/xar-1.5.2/lib/hash.o b/setup/xar-1.5.2/lib/hash.o new file mode 100644 index 0000000000000000000000000000000000000000..43428a15ba76ade26535a744d6dd486a19bfa381 GIT binary patch literal 15768 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 + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#define _FILE_OFFSET_BITS 64 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#ifndef HAVE_ASPRINTF +#include "asprintf.h" +#endif +#include "xar.h" +#include "filetree.h" +#include "archive.h" +#include "io.h" +#include "zxar.h" +#include "bzxar.h" +#include "hash.h" +#include "script.h" +#include "macho.h" + +#if !defined(LLONG_MAX) && defined(LONG_LONG_MAX) +#define LLONG_MAX LONG_LONG_MAX +#endif + +#if !defined(LLONG_MIN) && defined(LONG_LONG_MIN) +#define LLONG_MIN LONG_LONG_MIN +#endif + +struct datamod xar_datamods[] = { + { xar_hash_archived, + xar_hash_unarchived_out, + xar_hash_out_done, + xar_hash_unarchived, + xar_hash_archived_in, + xar_hash_done + }, + { (fromheap_in)NULL, + (fromheap_out)NULL, + (fromheap_done)NULL, + xar_script_in, + (toheap_out)NULL, + xar_script_done + }, + { (fromheap_in)NULL, + (fromheap_out)NULL, + (fromheap_done)NULL, + xar_macho_in, + (toheap_out)NULL, + xar_macho_done + }, + { xar_gzip_fromheap_in, + (fromheap_out)NULL, + xar_gzip_fromheap_done, + xar_gzip_toheap_in, + (toheap_out)NULL, + xar_gzip_toheap_done + }, + { xar_bzip_fromheap_in, + (fromheap_out)NULL, + xar_bzip_fromheap_done, + xar_bzip_toheap_in, + (toheap_out)NULL, + xar_bzip_toheap_done + } +}; + +int32_t xar_attrcopy_to_heap(xar_t x, xar_file_t f, xar_prop_t p, read_callback rcb, void *context) { + int modulecount = (sizeof(xar_datamods)/sizeof(struct datamod)); + void *modulecontext[modulecount]; + int r, off, i; + size_t bsize, rsize; + int64_t readsize=0, writesize=0, inc = 0; + void *inbuf; + char *tmpstr = NULL; + const char *opt, *csum; + off_t orig_heap_offset = XAR(x)->heap_offset; + xar_file_t tmpf = NULL; + xar_prop_t tmpp = NULL; + + memset(modulecontext, 0, sizeof(void*)*modulecount); + + opt = xar_opt_get(x, XAR_OPT_RSIZE); + if( !opt ) { + bsize = 4096; + } else { + bsize = strtol(opt, NULL, 0); + if( ((bsize == LONG_MAX) || (bsize == LONG_MIN)) && (errno == ERANGE) ) { + bsize = 4096; + } + } + + r = 1; + while(r != 0) { + inbuf = malloc(bsize); + if( !inbuf ) + return -1; + + r = rcb(x, f, inbuf, bsize, context); + if( r < 0 ) { + free(inbuf); + return -1; + } + + readsize+=r; + inc += r; + rsize = r; + + /* filter the data through the in modules */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].th_in ) { + xar_datamods[i].th_in(x, f, p, &inbuf, &rsize, &(modulecontext[i])); + } + } + + /* filter the data through the out modules */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].th_out ) + xar_datamods[i].th_out(x, f, p, inbuf, rsize, &(modulecontext[i])); + } + + off = 0; + if( rsize != 0 ) { + do { + r = write(XAR(x)->heap_fd, inbuf+off, rsize-off); + if( (r < 0) && (errno != EINTR) ) + return -1; + off += r; + writesize += r; + } while( off < rsize ); + } + XAR(x)->heap_offset += off; + free(inbuf); + + } + + + /* If size is 0, don't bother having anything in the heap */ + if( readsize == 0 ) { + XAR(x)->heap_offset = orig_heap_offset; + lseek(XAR(x)->heap_fd, -writesize, SEEK_CUR); + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].th_done ) + xar_datamods[i].th_done(x, f, p, &(modulecontext[i])); + } + return 0; + } + /* finish up anything that still needs doing */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].th_done ) + xar_datamods[i].th_done(x, f, p, &(modulecontext[i])); + } + + XAR(x)->heap_len += writesize; + tmpp = xar_prop_pget(p, "archived-checksum"); + if( tmpp ) + csum = xar_prop_getvalue(tmpp); + tmpf = xmlHashLookup(XAR(x)->csum_hash, BAD_CAST(csum)); + if( tmpf ) { + const char *attr = xar_prop_getkey(p); + opt = xar_opt_get(x, XAR_OPT_LINKSAME); + if( opt && (strcmp(attr, "data") == 0) ) { + const char *id = xar_attr_pget(tmpf, NULL, "id"); + xar_prop_pset(f, NULL, "type", "hardlink"); + tmpp = xar_prop_pfirst(f); + if( tmpp ) + tmpp = xar_prop_find(tmpp, "type"); + if( tmpp ) + xar_attr_pset(f, tmpp, "link", id); + + xar_prop_pset(tmpf, NULL, "type", "hardlink"); + tmpp = xar_prop_pfirst(tmpf); + if( tmpp ) + tmpp = xar_prop_find(tmpp, "type"); + if( tmpp ) + xar_attr_pset(tmpf, tmpp, "link", "original"); + + tmpp = xar_prop_pfirst(f); + if( tmpp ) + tmpp = xar_prop_find(tmpp, "data"); + xar_prop_punset(f, tmpp); + + XAR(x)->heap_offset = orig_heap_offset; + lseek(XAR(x)->heap_fd, -writesize, SEEK_CUR); + XAR(x)->heap_len -= writesize; + return 0; + } + opt = xar_opt_get(x, XAR_OPT_COALESCE); + if( opt ) { + long long tmpoff; + const char *offstr = NULL; + tmpp = xar_prop_pfirst(tmpf); + if( tmpp ) { + const char *key; + key = xar_prop_getkey(p); + tmpp = xar_prop_find(tmpp, key); + } + if( tmpp ) + tmpp = xar_prop_pget(tmpp, "offset"); + if( tmpp ) + offstr = xar_prop_getvalue(tmpp); + if( offstr ) { + tmpoff = strtoll(offstr, NULL, 10); + XAR(x)->heap_offset = orig_heap_offset; + lseek(XAR(x)->heap_fd, -writesize, SEEK_CUR); + orig_heap_offset = tmpoff; + XAR(x)->heap_len -= writesize; + } + + } + } else { + xmlHashAddEntry(XAR(x)->csum_hash, BAD_CAST(csum), XAR_FILE(f)); + } + + asprintf(&tmpstr, "%"PRIu64, readsize); + xar_prop_pset(f, p, "size", tmpstr); + free(tmpstr); + + asprintf(&tmpstr, "%"PRIu64, (uint64_t)orig_heap_offset); + xar_prop_pset(f, p, "offset", tmpstr); + free(tmpstr); + + tmpstr = (char *)xar_opt_get(x, XAR_OPT_COMPRESSION); + if( tmpstr && (strcmp(tmpstr, XAR_OPT_VAL_NONE) == 0) ) { + xar_prop_pset(f, p, "encoding", NULL); + tmpp = xar_prop_pget(p, "encoding"); + if( tmpp ) + xar_attr_pset(f, tmpp, "style", "application/octet-stream"); + } + + asprintf(&tmpstr, "%"PRIu64, writesize); + xar_prop_pset(f, p, "length", tmpstr); + free(tmpstr); + + return 0; +} + +/* xar_copy_from_heap + * This is the arcmod extraction entry point for extracting the file's + * data from the heap file. + * It is assumed the heap_fd is already positioned appropriately. + */ +int32_t xar_attrcopy_from_heap(xar_t x, xar_file_t f, xar_prop_t p, write_callback wcb, void *context) { + int modulecount = (sizeof(xar_datamods)/sizeof(struct datamod)); + void *modulecontext[modulecount]; + int r, i; + size_t bsize, def_bsize; + int64_t fsize, inc = 0, seekoff; + void *inbuf; + const char *opt; + xar_prop_t tmpp; + + memset(modulecontext, 0, sizeof(void*)*modulecount); + + opt = xar_opt_get(x, "rsize"); + if( !opt ) { + def_bsize = 4096; + } else { + def_bsize = strtol(opt, NULL, 0); + if( ((def_bsize == LONG_MAX) || (def_bsize == LONG_MIN)) && (errno == ERANGE) ) { + def_bsize = 4096; + } + } + + opt = NULL; + tmpp = xar_prop_pget(p, "offset"); + if( tmpp ) + opt = xar_prop_getvalue(tmpp); + if( !opt ) { + wcb(x, f, NULL, 0, context); + return 0; + } else { + seekoff = strtoll(opt, NULL, 0); + if( ((seekoff == LLONG_MAX) || (seekoff == LLONG_MIN)) && (errno == ERANGE) ) { + return -1; + } + } + + seekoff += XAR(x)->toc_count + sizeof(xar_header_t); + if( XAR(x)->fd > 1 ) { + r = lseek(XAR(x)->fd, seekoff, SEEK_SET); + if( r == -1 ) { + if( errno == ESPIPE ) { + ssize_t rr; + char *buf; + unsigned int len; + + len = seekoff - XAR(x)->toc_count; + len -= sizeof(xar_header_t); + if( XAR(x)->heap_offset > len ) { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Unable to seek"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } else { + len -= XAR(x)->heap_offset; + buf = malloc(len); + assert(buf); + rr = read(XAR(x)->fd, buf, len); + if( rr < len ) { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Unable to seek"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } + free(buf); + } + } else { + xar_err_new(x); + xar_err_set_file(x, f); + xar_err_set_string(x, "Unable to seek"); + xar_err_callback(x, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } + } + } + + opt = NULL; + tmpp = xar_prop_pget(p, "length"); + if( tmpp ) + opt = xar_prop_getvalue(tmpp); + if( !opt ) { + return 0; + } else { + fsize = strtoll(opt, NULL, 10); + if( ((fsize == LLONG_MAX) || (fsize == LLONG_MIN)) && (errno == ERANGE) ) { + return -1; + } + } + + bsize = def_bsize; + inbuf = malloc(bsize); + if( !inbuf ) { + return -1; + } + + while(1) { + /* Size has been reached */ + if( fsize == inc ) + break; + if( (fsize - inc) < bsize ) + bsize = fsize - inc; + r = read(XAR(x)->fd, inbuf, bsize); + if( r == 0 ) + break; + if( (r < 0) && (errno == EINTR) ) + continue; + if( r < 0 ) { + free(inbuf); + return -1; + } + + XAR(x)->heap_offset += r; + inc += r; + bsize = r; + + /* filter the data through the in modules */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].fh_in ) { + int32_t ret; + ret = xar_datamods[i].fh_in(x, f, p, &inbuf, &bsize, &(modulecontext[i])); + if( ret < 0 ) + return -1; + } + } + + /* Only due the write phase, if there is a write function to call */ + if(wcb){ + + /* filter the data through the out modules */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].fh_out ) { + int32_t ret; + ret = xar_datamods[i].fh_out(x, f, p, inbuf, bsize, &(modulecontext[i])); + if( ret < 0 ) + return -1; + } + } + + wcb(x, f, inbuf, bsize, context); + } + + free(inbuf); + bsize = def_bsize; + inbuf = malloc(bsize); + } + + free(inbuf); + /* finish up anything that still needs doing */ + for( i = 0; i < modulecount; i++) { + if( xar_datamods[i].fh_done ) { + int32_t ret; + ret = xar_datamods[i].fh_done(x, f, p, &(modulecontext[i])); + if( ret < 0 ) + return ret; + } + } + return 0; +} + +/* xar_attrcopy_from_heap_to_heap +* This does a simple copy of the heap data from one head (read-only) to another heap (write only). +* This does not set any properties or attributes of the file, so this should not be used alone. +*/ +int32_t xar_attrcopy_from_heap_to_heap(xar_t xsource, xar_file_t fsource, xar_prop_t p, xar_t xdest, xar_file_t fdest){ + int r, off; + size_t bsize; + int64_t fsize, inc = 0, seekoff, writesize=0; + off_t orig_heap_offset = XAR(xdest)->heap_offset; + void *inbuf; + const char *opt; + char *tmpstr = NULL; + xar_prop_t tmpp; + + opt = xar_opt_get(xsource, "rsize"); + if( !opt ) { + bsize = 4096; + } else { + bsize = strtol(opt, NULL, 0); + if( ((bsize == LONG_MAX) || (bsize == LONG_MIN)) && (errno == ERANGE) ) { + bsize = 4096; + } + } + + tmpp = xar_prop_pget(p, "offset"); + if( tmpp ) + opt = xar_prop_getvalue(tmpp); + + seekoff = strtoll(opt, NULL, 0); + + if( ((seekoff == LLONG_MAX) || (seekoff == LLONG_MIN)) && (errno == ERANGE) ) { + return -1; + } + + seekoff += XAR(xsource)->toc_count + sizeof(xar_header_t); + + if( XAR(xsource)->fd > 1 ) { + r = lseek(XAR(xsource)->fd, seekoff, SEEK_SET); + if( r == -1 ) { + if( errno == ESPIPE ) { + ssize_t rr; + char *buf; + unsigned int len; + + len = seekoff - XAR(xsource)->toc_count; + len -= sizeof(xar_header_t); + if( XAR(xsource)->heap_offset > len ) { + xar_err_new(xsource); + xar_err_set_file(xsource, fsource); + xar_err_set_string(xsource, "Unable to seek"); + xar_err_callback(xsource, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } else { + len -= XAR(xsource)->heap_offset; + buf = malloc(len); + assert(buf); + rr = read(XAR(xsource)->fd, buf, len); + if( rr < len ) { + xar_err_new(xsource); + xar_err_set_file(xsource, fsource); + xar_err_set_string(xsource, "Unable to seek"); + xar_err_callback(xsource, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } + free(buf); + } + } else { + xar_err_new(xsource); + xar_err_set_file(xsource, fsource); + xar_err_set_string(xsource, "Unable to seek"); + xar_err_callback(xsource, XAR_SEVERITY_NONFATAL, XAR_ERR_ARCHIVE_EXTRACTION); + } + } + } + + opt = NULL; + tmpp = xar_prop_pget(p, "length"); + if( tmpp ) + opt = xar_prop_getvalue(tmpp); + if( !opt ) { + return 0; + } else { + fsize = strtoll(opt, NULL, 10); + if( ((fsize == LLONG_MAX) || (fsize == LLONG_MIN)) && (errno == ERANGE) ) { + return -1; + } + } + + inbuf = malloc(bsize); + if( !inbuf ) { + return -1; + } + + + while(1) { + /* Size has been reached */ + if( fsize == inc ) + break; + if( (fsize - inc) < bsize ) + bsize = fsize - inc; + r = read(XAR(xsource)->fd, inbuf, bsize); + if( r == 0 ) + break; + if( (r < 0) && (errno == EINTR) ) + continue; + if( r < 0 ) { + free(inbuf); + return -1; + } + + XAR(xsource)->heap_offset += r; + inc += r; + bsize = r; + + off = 0; + + do { + r = write(XAR(xdest)->heap_fd, inbuf+off, r-off ); + off += r; + writesize += r; + } while( off < r ); + XAR(xdest)->heap_offset += off; + XAR(xdest)->heap_len += off; + } + + asprintf(&tmpstr, "%"PRIu64, (uint64_t)orig_heap_offset); + opt = xar_prop_getkey(p); + tmpp = xar_prop_pfirst(fdest); + if( tmpp ) + tmpp = xar_prop_find(tmpp, opt); + if( tmpp ) + xar_prop_pset(fdest, tmpp, "offset", tmpstr); + free(tmpstr); + + + free(inbuf); + + /* It is the caller's responsibility to copy the attributes of the file, etc, this only copies the data in the heap */ + + return 0; +} +/* xar_heap_to_archive + * x: archive to operate on + * Returns 0 on success, -1 on error + * Summary: copies the heap into the archive. + */ +int32_t xar_heap_to_archive(xar_t x) { + long bsize; + ssize_t r; + int off; + const char *opt; + char *b; + + opt = xar_opt_get(x, "rsize"); + if( !opt ) { + bsize = 4096; + } else { + bsize = strtol(opt, NULL, 0); + if( ((bsize == LONG_MAX) || (bsize == LONG_MIN)) && (errno == ERANGE) ) { + bsize = 4096; + } + } + + b = malloc(bsize); + if( !b ) return -1; + + while(1) { + r = read(XAR(x)->heap_fd, b, bsize); + if( r == 0 ) break; + if( (r < 0) && (errno == EINTR) ) continue; + if( r < 0 ) { + free(b); + return -1; + } + + off = 0; + do { + r = write(XAR(x)->fd, b+off, bsize-off); + if( (r < 0) && (errno != EINTR) ) + return -1; + off += r; + } while( off < bsize ); + } + return 0; +} diff --git a/setup/xar-1.5.2/lib/io.d b/setup/xar-1.5.2/lib/io.d new file mode 100644 index 0000000..6cf463c --- /dev/null +++ b/setup/xar-1.5.2/lib/io.d @@ -0,0 +1,23 @@ +lib/io.o : lib/io.c include/config.h include/xar.h lib/filetree.h \ + /usr/include/libxml2/libxml/xmlwriter.h \ + /usr/include/libxml2/libxml/xmlversion.h \ + /usr/include/libxml2/libxml/xmlexports.h \ + /usr/include/libxml2/libxml/xmlIO.h \ + /usr/include/libxml2/libxml/globals.h \ + /usr/include/libxml2/libxml/parser.h /usr/include/libxml2/libxml/tree.h \ + /usr/include/libxml2/libxml/xmlstring.h \ + /usr/include/libxml2/libxml/xmlregexp.h \ + /usr/include/libxml2/libxml/dict.h /usr/include/libxml2/libxml/hash.h \ + /usr/include/libxml2/libxml/valid.h \ + /usr/include/libxml2/libxml/xmlerror.h \ + /usr/include/libxml2/libxml/list.h \ + /usr/include/libxml2/libxml/xmlautomata.h \ + /usr/include/libxml2/libxml/entities.h \ + /usr/include/libxml2/libxml/encoding.h /usr/include/libxml2/libxml/SAX.h \ + /usr/include/libxml2/libxml/xlink.h /usr/include/libxml2/libxml/SAX2.h \ + /usr/include/libxml2/libxml/xmlmemory.h \ + /usr/include/libxml2/libxml/threads.h \ + /usr/include/libxml2/libxml/xmlreader.h \ + /usr/include/libxml2/libxml/relaxng.h \ + /usr/include/libxml2/libxml/xmlschemas.h lib/ea.h lib/archive.h lib/io.h \ + lib/zxar.h lib/bzxar.h lib/hash.h lib/script.h lib/macho.h diff --git a/setup/xar-1.5.2/lib/io.h b/setup/xar-1.5.2/lib/io.h new file mode 100644 index 0000000..3dce859 --- /dev/null +++ b/setup/xar-1.5.2/lib/io.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2005 Rob Braun + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Rob Braun nor the names of his contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * 03-Apr-2005 + * DRI: Rob Braun + */ +/* + * Portions Copyright 2006, Apple Computer, Inc. + * Christopher Ryan +*/ + +#ifndef _XAR_IO_H_ +#define _XAR_IO_H_ + +typedef int (*read_callback)(xar_t, xar_file_t, void *, size_t, void *context); +typedef int (*write_callback)(xar_t, xar_file_t, void *, size_t, void *context); + +typedef int (*fromheap_in)(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +typedef int (*fromheap_out)(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context); +typedef int (*fromheap_done)(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +typedef int (*toheap_in)(xar_t x, xar_file_t f, xar_prop_t p, void **in, size_t *inlen, void **context); +typedef int (*toheap_out)(xar_t x, xar_file_t f, xar_prop_t p, void *in, size_t inlen, void **context); +typedef int (*toheap_done)(xar_t x, xar_file_t f, xar_prop_t p, void **context); + +struct datamod { + fromheap_in fh_in; + fromheap_out fh_out; + fromheap_done fh_done; + toheap_in th_in; + toheap_out th_out; + toheap_done th_done; +}; + +int32_t xar_attrcopy_to_heap(xar_t x, xar_file_t f, xar_prop_t p, read_callback rcb, void *context); +int32_t xar_attrcopy_from_heap(xar_t x, xar_file_t f, xar_prop_t p, write_callback wcb, void *context); +int32_t xar_attrcopy_from_heap_to_heap(xar_t xsource, xar_file_t fsource, xar_prop_t p, xar_t xdest, xar_file_t fdest); +int32_t xar_heap_to_archive(xar_t x); + +#endif /* _XAR_IO_H_ */ diff --git a/setup/xar-1.5.2/lib/io.o b/setup/xar-1.5.2/lib/io.o new file mode 100644 index 0000000000000000000000000000000000000000..43820a35fc20f49b8d50ff35e80c00398c65c2f0 GIT binary patch literal 33104 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 x8zdM6- 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