pax_global_header00006660000000000000000000000064150156063270014517gustar00rootroot0000000000000052 comment=6af12b68af940793013743a35f15efb9b2370f98 e2fsprogs-1.47.3-rc1/000077500000000000000000000000001501560632700142105ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/.github/000077500000000000000000000000001501560632700155505ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/.github/workflows/000077500000000000000000000000001501560632700176055ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/.github/workflows/ci.yml000066400000000000000000000150411501560632700207240ustar00rootroot00000000000000name: CI on: [push] env: DEF_CFLAGS: -O2 -g -Wall jobs: gcc-build-and-test: name: Build and test with gcc runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS" - run: make -j8 check V=1 CFLAGS_WARN="-Werror" - run: make -j8 install V=1 DESTDIR=$PWD/installdir - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir - if: failure() uses: actions/upload-artifact@v4 with: name: gcc-test-fail-logs path: tests/*.failed clang-build-and-test: name: Build and test with clang runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y clang - run: ./configure CC=clang CFLAGS="$DEF_CFLAGS" - run: make -j8 check V=1 CFLAGS_WARN="-Werror" - run: make -j8 install V=1 DESTDIR=$PWD/installdir - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir - uses: actions/upload-artifact@v4 with: name: ubuntu-config.h path: lib/config.h - if: failure() uses: actions/upload-artifact@v4 with: name: clang-test-fail-logs path: tests/*.failed i386-build-and-test: name: Build and test with gcc -m32 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y gcc-multilib - run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS -m32" LDFLAGS="-m32" - run: make -j8 check V=1 CFLAGS_WARN="-Werror" - run: make -j8 install V=1 DESTDIR=$PWD/installdir - run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir - if: failure() uses: actions/upload-artifact@v4 with: name: i386-test-fail-logs path: tests/*.failed asan-build-and-test: name: Build and test with ASAN enabled runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y clang - run: echo "ASAN_CFLAGS=$DEF_CFLAGS -fsanitize=address -fno-sanitize-recover=address" >> $GITHUB_ENV - run: ./configure CC=clang CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS" - run: make -j8 check V=1 CFLAGS_WARN="-Werror" - if: failure() uses: actions/upload-artifact@v4 with: name: asan-test-fail-logs path: tests/*.failed ubsan-build-and-test: name: Build and test with UBSAN enabled runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y clang - run: echo "UBSAN_CFLAGS=$DEF_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" >> $GITHUB_ENV - run: ./configure CC=clang CFLAGS="$UBSAN_CFLAGS" LDFLAGS="$UBSAN_CFLAGS" - run: make -j8 check V=1 CFLAGS_WARN="-Werror" - if: failure() uses: actions/upload-artifact@v4 with: name: ubsan-test-fail-logs path: tests/*.failed macos-build-and-test: name: Build and test on macOS runs-on: macos-latest steps: - uses: actions/checkout@v4 - run: ./configure CFLAGS="$DEF_CFLAGS" # -Wno-error=deprecated-declarations is needed to suppress known warnings # due to e2fsprogs' use of sbrk(0) and daemon(). - run: make -j8 check V=1 CFLAGS_WARN="-Werror -Wno-error=deprecated-declarations" - if: failure() uses: actions/upload-artifact@v4 with: name: macos-test-fail-logs path: tests/*.failed - run: make -j8 install DESTDIR=$PWD/installdir - run: make -j8 uninstall DESTDIR=$PWD/installdir - uses: actions/upload-artifact@v4 with: name: macOS-config.h path: lib/config.h windows-msys2-build: name: Build mke2fs on Windows with ${{matrix.sys}} runs-on: windows-latest strategy: matrix: include: - { sys: mingw32, env: i686 } - { sys: mingw64, env: x86_64 } defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v4 - uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} update: true install: > make mingw-w64-${{matrix.env}}-cc # For now the only parts that actually build for Windows are mke2fs and its # dependencies: all libraries except libss. The build system doesn't want # to build just those parts, though, so do it one step at a time... - run: ./configure CFLAGS="$DEF_CFLAGS" - run: make -j8 top-deps V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/et/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/uuid/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/blkid/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/ext2fs/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/support/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C lib/e2p/ all V=1 CFLAGS_WARN="-Werror" - run: make -j8 -C misc/ mke2fs V=1 CFLAGS_WARN="-Werror" - run: misc/mke2fs.exe -T ext4 image.ext4 128M - uses: actions/upload-artifact@v4 with: name: windows-${{matrix.env}}-config.h path: lib/config.h # Jobs that cross-compile e2fsprogs for Android using the Android NDK. Note # that these use the autotools-based build system, which makes them a bit # different from the actual Android builds from the Android source tree. cross-compile-for-android: name: Cross-compile for Android (${{matrix.arch}}) strategy: matrix: include: - { arch: aarch64, target: aarch64-linux-android } - { arch: armv7a, target: armv7a-linux-androideabi } - { arch: i686, target: i686-linux-android } - { arch: x86_64, target: x86_64-linux-android } runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # See https://developer.android.com/ndk/guides/other_build_systems#autoconf - name: configure run: | TOOLCHAIN=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64 API_LEVEL=29 # Android 10 export AR=$TOOLCHAIN/bin/llvm-ar export CC=$TOOLCHAIN/bin/${{matrix.target}}${API_LEVEL}-clang export AS=$CC export LD=$TOOLCHAIN/bin/ld export RANLIB=$TOOLCHAIN/bin/llvm-ranlib export STRIP=$TOOLCHAIN/bin/llvm-strip ./configure --host=${{matrix.target}} CFLAGS="$DEF_CFLAGS" - run: make -j8 V=1 CFLAGS_WARN="-Werror" - uses: actions/upload-artifact@v4 with: name: android-${{matrix.arch}}-config.h path: lib/config.h e2fsprogs-1.47.3-rc1/.gitignore000066400000000000000000000077371501560632700162160ustar00rootroot00000000000000autom4te.cache build build.profiled build.static FILES ^core .depend *~ patches Makefile *.bak *.diff *.dSYM *.o *.a *.orig *.patch *.pc *.rej *.swp 00[0-9][1-9]*.patch MCONFIG Makefile.in.old asm_types.h config.log config.status cscope.* debugfs/extent_cmds.c debugfs/debug_cmds.c debugfs/debugfs debugfs/debugfs.8 debugfs/extent_cmds.c debugfs/tst_set_fields doc/libext2fs.aux doc/libext2fs.cp doc/libext2fs.dvi doc/libext2fs.fn doc/libext2fs.fns doc/libext2fs.info doc/libext2fs.ky doc/libext2fs.log doc/libext2fs.pg doc/libext2fs.toc doc/libext2fs.tp doc/libext2fs.vr e2fsck/crc32table.h e2fsck/e2fsck e2fsck/e2fsck.8 e2fsck/e2fsck.conf.5 e2fsck/e2fsck.shared e2fsck/e2fsck.static e2fsck/gen_crc32table e2fsck/prof_err.c e2fsck/prof_err.h e2fsck/tst_crc32 e2fsck/tst_problem e2fsck/tst_refcount e2fsck/tst_region e2fsprogs.spec ext2ed/ext2ed.conf ext2ed/ext2ed.8 intl/charset.alias intl/libgnuintl.h intl/libintl.a intl/libintl.h intl/ref-add.sed intl/ref-del.sed lib/blkid/blkid.h lib/blkid/blkid.pc lib/blkid/blkid_types.h lib/blkid/libblkid.3 lib/blkid/subdirs lib/blkid/test_probe lib/blkid/tests/*.ok lib/blkid/tests/*.out lib/blkid/tests/tmp lib/blkid/tst_cache lib/blkid/tst_dev lib/blkid/tst_devname lib/blkid/tst_devno lib/blkid/tst_getsize lib/blkid/tst_probe lib/blkid/tst_read lib/blkid/tst_resolve lib/blkid/tst_save lib/blkid/tst_tag lib/blkid/tst_types lib/config.h lib/dirpaths.h lib/e2p/e2p.pc lib/e2p/subdirs lib/e2p/tst_feature lib/e2p/tst_ostype lib/et/com_err.pc lib/et/compile_et lib/et/subdirs lib/ext2fs/crc32c_table.h lib/ext2fs/debug_cmds.c lib/ext2fs/ext2_err.c lib/ext2fs/ext2_err.et lib/ext2fs/ext2_err.h lib/ext2fs/ext2_types.h lib/ext2fs/ext2fs.pc lib/ext2fs/extent_cmds.c lib/ext2fs/gen_crc32ctable lib/ext2fs/subdirs lib/ext2fs/tst_badblocks lib/ext2fs/tst_bitmaps lib/ext2fs/tst_bitmaps_cmd.c lib/ext2fs/tst_bitmaps_out lib/ext2fs/tst_bitops lib/ext2fs/tst_cmds.c lib/ext2fs/tst_csum lib/ext2fs/tst_crc32c lib/ext2fs/tst_digest_encode lib/ext2fs/tst_getsectsize lib/ext2fs/tst_getsize lib/ext2fs/tst_icount lib/ext2fs/tst_inline lib/ext2fs/tst_inline_data lib/ext2fs/tst_inode_size lib/ext2fs/tst_iscan lib/ext2fs/tst_libext2fs lib/ext2fs/tst_sha256 lib/ext2fs/tst_sha512 lib/ext2fs/tst_super_size lib/ext2fs/tst_types lib/quota/subdirs lib/ss/mk_cmds lib/ss/ss.pc lib/ss/ss_err.c lib/ss/ss_err.h lib/ss/std_rqs.c lib/ss/subdirs lib/ss/test.diff lib/ss/test_cmd.c lib/ss/test_out lib/ss/test_ss lib/support/prof_err.c lib/support/prof_err.h lib/support/subdirs lib/uuid/subdirs lib/uuid/tst_uuid lib/uuid/uuid.3 lib/uuid/uuid.h lib/uuid/uuid.pc lib/uuid/uuid_clear.3 lib/uuid/uuid_compare.3 lib/uuid/uuid_copy.3 lib/uuid/uuid_generate.3 lib/uuid/uuid_is_null.3 lib/uuid/uuid_parse.3 lib/uuid/uuid_time lib/uuid/uuid_time.3 lib/uuid/uuid_types.h lib/uuid/uuid_unparse.3 misc/badblocks misc/badblocks.8 misc/base_device misc/base_device.out misc/blkid misc/blkid.8 misc/chattr misc/chattr.1 misc/default_profile.c misc/dumpe2fs misc/dumpe2fs.8 misc/e2freefrag misc/e2freefrag.8 misc/e2fuzz misc/e2image misc/e2image.8 misc/e2initrd_helper misc/e2label.8 misc/e2mmpstatus misc/e2mmpstatus.8 misc/e2undo misc/e2undo.8 misc/e4crypt misc/e4crypt.8 misc/e4defrag misc/e4defrag.8 misc/ext4.5 misc/filefrag misc/filefrag.8 misc/findfs.8 misc/findsuper misc/fsck misc/fsck.8 misc/fuse2fs misc/fuse2fs.1 misc/logsave misc/logsave.8 misc/lsattr misc/lsattr.1 misc/mke2fs misc/mke2fs.8 misc/mke2fs.conf.5 misc/mke2fs.conf misc/mklost+found misc/mklost+found.8 misc/prof_err.c misc/prof_err.h misc/profile.h misc/tune2fs misc/tune2fs.8 misc/uuidd misc/uuidd.8 misc/uuidgen misc/uuidgen.1 ncscope.* parse-types.log po/Makefile.in po/POTFILES public_config.h resize/resize2fs resize/resize2fs.8 resize/test_extent resize/test_extent.out tags TAGS tests/progs/test_icount tests/progs/test_icount_cmds.c tests/progs/crcsum tests/*.ok tests/*.failed tests/*.log tests/*.tmp tests/*.slow tests/test_data.tmp tests/mke2fs.conf tests/test_script tests/test_one util/dirpaths.h util/gen-tarball util/install-symlink util/subst util/subst.conf Meta e2fsprogs-1.47.3-rc1/.missing-copyright000066400000000000000000000001521501560632700176660ustar00rootroot00000000000000#!/bin/sh find . -type f \! -name \*~ \! -exec grep -q Begin-Header \{\} \; -print \ | grep -v ^./build e2fsprogs-1.47.3-rc1/.release-checklist000066400000000000000000000007451501560632700176060ustar00rootroot000000000000001) Do "make depend" if necessary 2) "make check"!!! 3) Use "git log" to assemble release notes and update RELEASE-NOTES symlink. 4) Update files which contain version information version.h README e2fsprogs.lsm e2fsprogs.spec doc/libext2fs.texinfo (three places) RELEASE-NOTES 5) Run "(cd po; make e2fsprogs.pot-update)" to update the translation template. 6) Make source tarfile 7) Adjust sizes in e2fsprogs-VER.lsm; rebuild source files; regenerate source tarfile e2fsprogs-1.47.3-rc1/ABOUT-NLS000066400000000000000000002674741501560632700154630ustar00rootroot000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this 'ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU 'gettext'. Other packages have their own ways to internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU 'gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU 'gettext' installed on your system and run configure without an option for your new package, 'configure' will probably detect the previously built and installed 'libintl' library and will decide to use it. If not, you may have to to use the '--with-libintl-prefix' option to tell 'configure' where to look for it. Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at 'configure' time by using the '--disable-nls' switch, all available translations are installed together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. 'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the 'LANG' environment variable to the appropriate 'LL_CC' combination. If you happen to have the 'LC_ALL' or some other 'LC_xxx' environment variables set, you should unset them before setting 'LANG', otherwise the setting of 'LANG' will not have the desired effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in 'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your '.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of 'LL_CC', with 'LL' denoting the language and 'CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command 'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called 'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under 'nb' and some older ones under 'no', it's recommended for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. In the 'LANGUAGE' environment variable, but not in the 'LANG' environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to denote the language's main dialect. For example, 'de' is equivalent to 'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, 'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has '-request' appended. For example, speakers of Swedish can send a message to 'sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to 'coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of Jun 2014. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs +---------------------------------------------------+ a2ps | [] [] [] | aegis | | anubis | | aspell | [] [] [] | bash | [] [] [] | bfd | | binutils | [] | bison | | bison-runtime | [] | buzztrax | [] | ccd2cue | | ccide | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | [] | datamash | | denemo | [] [] | dfarc | [] | dialog | [] [] [] | dico | | diffutils | [] | dink | [] | direvent | | doodle | [] | dos2unix | | dos2unix-man | | e2fsprogs | [] [] | enscript | [] | exif | [] | fetchmail | [] [] | findutils | [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | [] | gcc | | gdbm | | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | gnubik | [] | gnucash | () () [] | gnuchess | | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] | gramadoir | | grep | [] [] [] | grub | [] | gsasl | | gss | | gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] | gst-plugins-ugly | [] [] [] | gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] | help2man | | help2man-texi | | hylafax | | idutils | | iso_15924 | [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | | kbd | [] | klavaro | [] [] [] [] [] | ld | [] | leafpad | [] [] [] [] | libc | [] [] [] | libexif | () | libextractor | | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | libiconv | [] [] | libidn | [] | liferea | [] [] [] [] | lilypond | [] [] | lordsawar | [] | lprng | | lynx | [] [] | m4 | [] | mailfromd | | mailutils | | make | [] | man-db | [] [] | man-db-manpages | | midi-instruments | [] [] [] | minicom | [] | mkisofs | [] | myserver | [] | nano | [] [] [] | opcodes | | parted | [] | pies | | pnmixer | | popt | [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] | pushover | [] | pwdutils | | pyspread | | radius | [] | recode | [] [] [] | recutils | | rpm | | rush | | sarg | | sed | [] [] [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] | sudoers | [] [] | sysstat | [] | tar | [] [] [] | texinfo | [] [] | texinfo_document | [] [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | | trader | | util-linux | [] | ve | | vice | | vmm | | vorbis-tools | [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] | wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] [] | aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] [] [] [] | ccd2cue | [] [] [] [] | ccide | [] [] [] [] [] [] | cflow | [] [] [] [] [] | clisp | [] [] [] [] [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | diffutils | [] [] [] [] [] [] | dink | [] [] [] [] [] [] | direvent | [] [] [] [] | doodle | [] [] [] [] | dos2unix | [] [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] () [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] | flex | [] [] [] [] [] [] | freedink | [] [] [] [] [] [] [] [] | fusionforge | [] [] [] | gas | [] [] [] | gawk | [] [] [] [] [] | gcal | [] [] [] [] | gcc | [] | gdbm | [] [] [] [] [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | gnubik | [] [] [] [] [] | gnucash | [] () () () () () () | gnuchess | [] [] [] [] | gnulib | [] [] [] [] [] [] [] | gnunet | [] | gnunet-gtk | [] | gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | help2man | [] [] [] [] [] [] [] | help2man-texi | [] [] [] | hylafax | [] [] | idutils | [] [] [] [] [] | iso_15924 | [] () [] [] () [] () | iso_3166 | [] () [] [] [] [] () [] () | iso_3166_2 | [] () () () | iso_4217 | [] () [] [] [] () [] () | iso_639 | [] () [] [] () [] () | iso_639_3 | () () () | iso_639_5 | () () () | jwhois | [] [] [] [] [] | kbd | [] [] [] [] [] [] | klavaro | [] [] [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] [] | liferea | [] () [] [] [] [] [] | lilypond | [] [] [] [] [] [] | lordsawar | [] [] | lprng | | lynx | [] [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | [] | mailutils | [] [] [] [] | make | [] [] [] [] [] | man-db | [] [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] [] [] | nano | [] [] [] [] [] [] [] | opcodes | [] [] [] [] [] | parted | [] [] [] | pies | [] | pnmixer | [] [] | popt | [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] [] | psmisc | [] [] [] [] [] [] [] | pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | rpm | [] [] [] [] [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] [] | skribilo | [] [] [] | solfege | [] [] [] [] [] [] [] [] | solfege-manual | [] [] [] [] [] | spotmachine | [] [] [] [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] [] [] | sysstat | [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] [] | texinfo_document | [] [] [] [] | tigervnc | [] [] [] [] [] [] | tin | [] [] [] [] | tin-man | [] | tracgoogleappsa... | [] [] [] [] [] | trader | [] [] [] [] [] [] | util-linux | [] [] [] [] | ve | [] [] [] [] [] | vice | () () () | vmm | [] [] | vorbis-tools | [] [] [] [] | wastesedge | [] | wcd | [] [] [] [] | wcd-man | [] | wdiff | [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr 119 131 32 1 6 0 94 95 22 13 4 102 139 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | | ccd2cue | [] | ccide | [] [] | cflow | [] [] [] | clisp | | coreutils | [] [] | cpio | [] [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] | cryptsetup | [] | datamash | | denemo | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] | dink | [] | direvent | [] | doodle | [] [] | dos2unix | [] [] | dos2unix-man | | e2fsprogs | [] [] | enscript | [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] | freedink | [] [] [] [] | fusionforge | | gas | [] | gawk | [] () [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | gnubik | [] [] [] | gnucash | () () () () () | gnuchess | | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | help2man | [] [] [] | help2man-texi | | hylafax | [] | idutils | [] [] | iso_15924 | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] | iso_4217 | [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | klavaro | [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | | make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] | mkisofs | [] [] | myserver | [] | nano | [] [] [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | | pnmixer | [] [] | popt | [] [] [] [] [] [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] [] [] [] | pspp | [] [] | pushover | [] | pwdutils | [] | pyspread | | radius | [] | recode | [] [] [] [] [] [] [] | recutils | | rpm | [] | rush | [] | sarg | | sed | [] [] [] [] [] [] [] | sharutils | | shishi | | skribilo | [] | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] [] [] | sudoers | [] [] [] | sysstat | [] [] [] [] | tar | [] [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] [] | tigervnc | | tin | | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] | ve | [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | [] | wcd | | wcd-man | | wdiff | [] [] [] | wget | [] [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ a2ps | [] [] | aegis | [] | anubis | [] [] [] | aspell | [] [] | bash | [] [] | bfd | | binutils | | bison | [] | bison-runtime | [] [] [] [] [] [] | buzztrax | | ccd2cue | | ccide | [] [] | cflow | [] | clisp | [] | coreutils | [] [] | cpio | [] | cppi | | cpplib | [] | cryptsetup | [] | datamash | [] [] | denemo | | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | | diffutils | [] [] [] | dink | [] | direvent | [] | doodle | [] | dos2unix | [] [] | dos2unix-man | [] | e2fsprogs | [] | enscript | [] | exif | [] [] [] | fetchmail | [] | findutils | [] [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] | gjay | | glunarclock | [] [] | gnubiff | [] | gnubik | [] [] | gnucash | () () () () () () () [] | gnuchess | [] [] | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] [] [] | help2man | [] | help2man-texi | | hylafax | [] | idutils | [] | iso_15924 | () [] [] | iso_3166 | [] [] [] () [] [] [] [] [] [] | iso_3166_2 | () [] | iso_4217 | () [] [] [] | iso_639 | [] [] () [] [] [] [] | iso_639_3 | [] () [] | iso_639_5 | () | jwhois | [] [] | kbd | [] | klavaro | [] [] | ld | | leafpad | [] [] [] [] [] | libc | [] [] | libexif | [] | libextractor | [] | libgnutls | [] [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | lilypond | [] | lordsawar | | lprng | | lynx | [] | m4 | [] | mailfromd | | mailutils | | make | [] [] | man-db | [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] [] | minicom | [] | mkisofs | [] | myserver | | nano | [] [] [] | opcodes | [] | parted | [] [] | pies | | pnmixer | [] | popt | [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | | radius | [] | recode | [] [] | recutils | [] | rpm | [] | rush | [] | sarg | | sed | [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | [] | spotmachine | [] | sudo | [] [] [] | sudoers | [] [] [] | sysstat | [] [] | tar | [] [] [] | texinfo | [] | texinfo_document | [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | [] [] [] | trader | [] | util-linux | [] | ve | [] | vice | [] | vmm | [] | vorbis-tools | [] | wastesedge | [] | wcd | [] | wcd-man | [] | wdiff | [] | wget | [] [] | wyslij-po | [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] [] [] [] | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] | ccd2cue | [] [] | ccide | [] [] [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cppi | [] [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | datamash | [] [] | denemo | | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] | dink | | direvent | [] [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] | e2fsprogs | [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] [] [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | [] [] [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | gnubik | [] [] [] [] | gnucash | () () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] | gss | [] [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | hylafax | | idutils | [] [] [] | iso_15924 | [] () [] [] [] [] | iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] () [] | iso_4217 | [] [] () [] [] [] [] [] | iso_639 | [] [] [] () [] [] [] [] [] [] | iso_639_3 | [] () | iso_639_5 | () [] | jwhois | [] [] [] [] | kbd | [] [] | klavaro | [] [] [] [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] | libexif | [] () [] | libextractor | [] | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] [] | liferea | [] [] [] [] () [] [] | lilypond | | lordsawar | | lprng | [] | lynx | [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | midi-instruments | [] [] [] [] [] [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] | nano | [] [] [] [] [] [] | opcodes | | parted | [] [] [] [] [] [] | pies | [] | pnmixer | [] | popt | [] [] [] [] [] [] | procps-ng | [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | recutils | [] [] | rpm | [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] | shishi | [] [] | skribilo | [] | solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] [] | ve | [] [] [] | vice | | vmm | | vorbis-tools | [] [] [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] [] [] [] | wget | [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +------------------------------------------------+ nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 7 3 6 114 1 12 88 32 82 3 40 45 7 101 sv sw ta te tg th tr uk ur vi wa wo zh_CN +----------------------------------------------+ a2ps | [] [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | ccd2cue | [] [] [] | ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | denemo | [] | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] | dink | [] | direvent | [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | freedink | [] [] [] | fusionforge | | gas | [] | gawk | [] [] [] | gcal | [] [] [] | gcc | [] | gdbm | [] [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | idutils | [] [] [] | iso_15924 | [] () [] [] () [] | iso_3166 | [] [] () [] [] () [] [] | iso_3166_2 | () [] [] () [] | iso_4217 | [] () [] [] () [] | iso_639 | [] [] [] () [] [] () [] [] | iso_639_3 | [] () [] [] () | iso_639_5 | () [] () | jwhois | [] [] [] [] | kbd | [] [] [] [] | klavaro | [] [] [] [] [] [] | ld | [] [] [] [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () | libextractor | [] [] | libgnutls | [] [] [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | () [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] | minicom | [] [] | mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | pnmixer | [] [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | pyspread | [] | radius | [] [] | recode | [] [] [] [] | recutils | [] [] [] | rpm | [] [] [] [] | rush | [] [] | sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] | skribilo | [] [] | solfege | [] [] [] [] | solfege-manual | [] | spotmachine | [] [] [] | sudo | [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] [] | trader | [] | util-linux | [] [] [] [] | ve | [] [] [] [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | | wcd | [] [] [] | wcd-man | [] | wdiff | [] [] [] [] | wget | [] [] [] | wyslij-po | [] [] | xboard | [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +----------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN 106 1 4 3 0 13 51 115 1 125 7 1 100 zh_HK zh_TW +-------------+ a2ps | | 30 aegis | | 9 anubis | | 19 aspell | | 29 bash | [] | 23 bfd | | 11 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 9 ccd2cue | | 10 ccide | | 17 cflow | | 16 clisp | | 10 coreutils | | 18 cpio | | 20 cppi | | 17 cpplib | [] | 19 cryptsetup | | 14 datamash | | 11 denemo | | 5 dfarc | | 17 dialog | [] | 42 dico | | 6 diffutils | | 22 dink | | 10 direvent | | 11 doodle | | 12 dos2unix | [] | 18 dos2unix-man | | 9 e2fsprogs | | 15 enscript | | 21 exif | | 27 fetchmail | | 19 findutils | | 29 flex | [] | 19 freedink | | 24 fusionforge | | 3 gas | | 5 gawk | | 13 gcal | | 8 gcc | | 2 gdbm | | 10 gettext-examples | [] [] | 40 gettext-runtime | [] [] | 35 gettext-tools | [] | 24 gjay | | 9 glunarclock | [] | 27 gnubiff | | 9 gnubik | | 19 gnucash | () | 6 gnuchess | | 11 gnulib | | 23 gnunet | | 1 gnunet-gtk | | 1 gold | | 7 gphoto2 | [] | 19 gprof | | 21 gramadoir | | 14 grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 gst-plugins-bad | | 21 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 32 gtick | | 19 gtkam | | 24 gtkspell | [] [] | 48 guix | | 2 guix-packages | | 0 gutenprint | | 15 hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 idutils | | 14 iso_15924 | [] | 23 iso_3166 | [] [] | 58 iso_3166_2 | | 9 iso_4217 | [] [] | 28 iso_639 | [] [] | 46 iso_639_3 | | 10 iso_639_5 | | 2 jwhois | [] | 20 kbd | | 17 klavaro | | 30 ld | [] | 15 leafpad | [] | 39 libc | [] | 24 libexif | | 10 libextractor | | 5 libgnutls | | 13 libgphoto2 | | 10 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 make | | 19 man-db | | 15 man-db-manpages | | 10 midi-instruments | [] | 43 minicom | [] | 17 mkisofs | | 13 myserver | | 9 nano | [] | 30 opcodes | | 12 parted | [] | 23 pies | | 4 pnmixer | | 9 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 pyspread | | 6 radius | | 9 recode | | 31 recutils | | 10 rpm | [] | 13 rush | | 10 sarg | | 4 sed | [] | 35 sharutils | | 13 shishi | | 7 skribilo | | 7 solfege | | 21 solfege-manual | | 9 spotmachine | | 11 sudo | | 26 sudoers | | 22 sysstat | | 23 tar | [] | 30 texinfo | | 17 texinfo_document | | 13 tigervnc | | 14 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 trader | | 12 util-linux | | 13 ve | | 14 vice | | 1 vmm | | 3 vorbis-tools | | 13 wastesedge | | 3 wcd | | 8 wcd-man | | 3 wdiff | [] | 23 wget | | 21 wyslij-po | | 14 xboard | | 10 xdg-user-dirs | [] [] | 68 xkeyboard-config | [] | 28 +-------------+ 89 teams zh_HK zh_TW 166 domains 7 42 2809 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If Jun 2014 seems to be old, you may fetch a more recent copy of this 'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at 'http://translationproject.org/extra/matrix.html'. 1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU 'gettext' in your package. Of course you have to respect the GNU Lesser General Public License which covers the use of the GNU 'gettext' library. This means in particular that even non-free programs can use 'libintl' as a shared library, whereas only free software can use 'libintl' as a static library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact 'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. e2fsprogs-1.47.3-rc1/Android.bp000066400000000000000000000050211501560632700161110ustar00rootroot00000000000000// Copyright 2017 The Android Open Source Project package { default_applicable_licenses: ["external_e2fsprogs_license"], } // Added automatically by a large-scale-change that took the approach of // 'apply every license found to every target'. While this makes sure we respect // every license restriction, it may not be entirely correct. // // e.g. GPL in an MIT project might only apply to the contrib/ directory. // // Please consider splitting the single license below into multiple licenses, // taking care not to lose any license_kind information, and overriding the // default license using the 'licenses: [...]' property on targets as needed. // // For unused files, consider creating a 'fileGroup' with "//visibility:private" // to attach the license to, and including a comment whether the files may be // used in the current project. // See: http://go/android-license-faq license { name: "external_e2fsprogs_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-0BSD", "SPDX-license-identifier-Apache-2.0", "SPDX-license-identifier-BSD", "SPDX-license-identifier-GPL", "SPDX-license-identifier-GPL-2.0", "SPDX-license-identifier-LGPL", "SPDX-license-identifier-LGPL-2.0", "SPDX-license-identifier-LGPL-2.1", "SPDX-license-identifier-LGPL-3.0", "SPDX-license-identifier-MIT", "legacy_notice", "legacy_unencumbered", ], license_text: [ "NOTICE", ], } cc_defaults { name: "e2fsprogs-defaults", cflags: [ "-Wall", "-Werror", // Some warnings that Android's build system enables by default are not // supported by upstream e2fsprogs. When such a warning shows up, // disable it below. Please don't disable warnings that upstream // e2fsprogs is supposed to support; for those, fix the code instead. "-Wno-pointer-arith", "-Wno-sign-compare", "-Wno-type-limits", "-Wno-typedef-redefinition", "-Wno-unused-parameter", ], target: { bionic: { system_shared_libs: [ "libc", "libdl", ], }, darwin: { // This matches what the upstream CI uses cflags: ["-Wno-error=deprecated-declarations"], }, windows: { include_dirs: ["external/e2fsprogs/include/mingw"], }, }, } subdirs = [ "contrib", "debugfs", "e2fsck", "lib", "misc", "resize", ] e2fsprogs-1.47.3-rc1/CleanSpec.mk000066400000000000000000000045221501560632700164010ustar00rootroot00000000000000# Copyright (C) 2007 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # If you don't need to do a full clean build but would like to touch # a file or delete some intermediate files, add a clean step to the end # of the list. These steps will only be run once, if they haven't been # run before. # # E.g.: # $(call add-clean-step, touch -c external/sqlite/sqlite3.h) # $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) # # Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with # files that are missing or have been moved. # # Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. # Use $(OUT_DIR) to refer to the "out" directory. # # If you need to re-do something that's already mentioned, just copy # the command and add it to the bottom of the list. E.g., if a change # that you made last week required touching a file and a change you # made today requires touching the same file, just copy the old # touch step and add it to the end of the list. # # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ # For example: #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libext2_uuid_intermediates) $(call add-clean-step, rm -rf $(TARGET_RECOVERY_OUT)/root/sbin) e2fsprogs-1.47.3-rc1/INSTALL000066400000000000000000000045071501560632700152470ustar00rootroot00000000000000 To install the second extended file system management programs, just follow the steps: 1) Change directory into the top of the e2fsprogs source tree 2) Create a build directory and cd into it: mkdir build; cd build 3) Run the configure script ../configure If you wish to turn on ELF shared libraries, add the option --enable-elf-shlibs. If you wish to build profiling libraries, add the option --enable-profile. Note that if you are building on an older system (i.e., a 2.4 kernel and/or glibc 2.2), the use of thread local storage will probably cause programs that use the uuid library to core dump. To disable thread local storage, use the configure option --disable-tls. 4) Compile the programs make 5) Check to make sure the installation built correctly: make check 6) Install the programs Run `make install' 7) Install the include files and libraries You can run `make install-libs' to install the include files and libraries. Please note that this installation is not needed for the programs to work. It is only needed if you expect to develop other programs using the libraries or if you want to compile other program using these libraries (like the 4.4BSD dump and restore port). 8) Remove any pre-formatted man pages. Some distributions will have pre-formatted manual pages which will always be displayed in preference to newer man pages in /usr/man. If this is the case, you may need to manually remove them in order to see the correct manual pages. The shell script in install-utils/remove_preformat_manpages may be helpful in doing so. 9) Make sure your /etc/fstab file is correct. Some distributions install an /etc/fstab which is missing the fifth and sixth field of filesystem entry, which are the dump frequency, and the fsck pass number, respectively. The problem with this is that the getmntent() library routine interprets those missing fields as "0", and a pass number of 0 is documented as meaning that fsck should not check that particular filesystem. If your entries in your /etc/fstab file look like this: /dev/hda4 / ext2 defaults you should add "1 1" at the end of each line, so that they look like this: /dev/hda4 / ext2 defaults 1 1 There is a script in install-utils/convfstab (donated by Michael Weller) that may help you correct your /etc/fstab file. e2fsprogs-1.47.3-rc1/INSTALL.elfbin000066400000000000000000000042361501560632700165040ustar00rootroot00000000000000NOTE: This is the ELF version of the binary distribution. If you have a DLL system, please compile e2fsprogs from sources yourself. (In fact, in general you're better off compiling e2fsprogs from sources instead of using precompiled binaries.) Also please note that these binaries assume the use of the GNU Libc. If you're still using libc5, you'll need build e2fsprogs from source. To install the binary distribution of the second extended file system management programs, just follow the steps: 1) Install this tar file using the following command: gunzip < e2fsprogs-1.13-elfbin.tar.gz | (cd /; tar Sxvpf - ) 2) Run ldconfig to update the shared library pointers. As root, type /sbin/ldconfig. This will update the links to the shared libraries included in the distribution. You can then remove the old versions of the libraries from /lib. 3) Remove any pre-formatted man pages. Some distributions will have pre-formatted manual pages which will always be displayed in preference to newer man pages in /usr/man. If this is the case, you may need to manually remove them in order to see the correct manual pages. The shell script in install-utils/remove_preformat_manpages may be helpful in doing so. 4) Make sure your /etc/fstab file is correct. Some distributions install an /etc/fstab which is missing the fifth and sixth field of filesystem entry, which are the dump frequency, and the fsck pass number, respectively. The problem with this is that the getmntent() library routine interprets those missing fields as "0", and a pass number of 0 is documented as meaning that fsck should not check that particular filesystem. If your entries in your /etc/fstab file look like this: /dev/hda4 / ext2 defaults you should add "1 1" at the end of each line, so that they look like this: /dev/hda4 / ext2 defaults 1 1 There is a script in install-utils/convfstab (donated by Michael Weller) that may help you correct your /etc/fstab file. 5) Cleanup files from the installation. When you're done with the installation, you will probably want to remove /INSTALL (this file), /README, and /install-utils from your root directory e2fsprogs-1.47.3-rc1/MCONFIG.in000066400000000000000000000242211501560632700156230ustar00rootroot00000000000000# Beginning of file MCONFIG all:: all-static:: check:: fullcheck:: SHELL = /bin/sh COMPRESS_EXT = gz bz2 bz Z prefix = @prefix@ root_prefix = @root_prefix@ exec_prefix = @exec_prefix@ root_bindir = @root_bindir@ root_sbindir = @root_sbindir@ root_libdir = @root_libdir@ datarootdir = @datarootdir@ bindir = @bindir@ sbindir = @sbindir@ libdir = @libdir@ datadir= @datadir@ localedir = $(datadir)/locale root_sysconfdir= @root_sysconfdir@ includedir = @includedir@ mandir = @mandir@ man1dir = $(mandir)/man1 man3dir = $(mandir)/man3 man5dir = $(mandir)/man5 man8dir = $(mandir)/man8 infodir = @infodir@ datadir = @datadir@ pkgconfigdir = $(libdir)/pkgconfig pkglibexecdir = @libexecdir@/e2fsprogs HAVE_UDEV = @have_udev@ UDEV_RULES_DIR = @pkg_udev_rules_dir@ HAVE_CROND = @have_crond@ CROND_DIR = @crond_dir@ HAVE_SYSTEMD = @have_systemd@ SYSTEMD_SYSTEM_UNIT_DIR = @systemd_system_unit_dir@ @SET_MAKE@ @ifGNUmake@ V = @ifGNUmake@ ifeq ($(strip $(V)),) @ifGNUmake@ # E = @echo @ifGNUmake@ # ES = echo @ifGNUmake@ # Q = @ @ifGNUmake@ E = @E@ @ifGNUmake@ ES = @ES@ @ifGNUmake@ Q = @Q@ @ifGNUmake@ else @ifGNUmake@ E = @\# @ifGNUmake@ ES = \# @ifGNUmake@ Q = @ifGNUmake@ endif @ifNotGNUmake@ E = @E@ @ifNotGNUmake@ ES = @ES@ @ifNotGNUmake@ Q = @Q@ @ifGNUmake@ CHECK=sparse @ifGNUmake@ CHECK_OPTS=-Wsparse-all -Wno-transparent-union -Wno-return-void -Wno-undef -Wno-non-pointer-null @ifGNUmake@ CPPCHECK=cppcheck @ifGNUmake@ CPPCHECK_OPTS=--force --enable=all --quiet @ifGNUmake@ ifeq ("$(C)", "2") @ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS) -Wbitwise -D__CHECK_ENDIAN__ @ifGNUmake@ CPPCHECK_CMD=$(CPPCHECK) $(CPPCHECK_OPTS) @ifGNUmake@ else @ifGNUmake@ ifeq ("$(C)", "1") @ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS) @ifGNUmake@ CPPCHECK_CMD=$(CPPCHECK) $(CPPCHECK_OPTS) @ifGNUmake@ else @ifGNUmake@ CHECK_CMD=@true @ifGNUmake@ CPPCHECK_CMD=@true @ifGNUmake@ endif @ifGNUmake@ endif @ifNotGNUmake@ CHECK_CMD=true @ifNotGNUmake@ CPPCHECK_CMD=true SANITIZER_CFLAGS = @lto_cflags@ @ubsan_cflags@ @addrsan_cflags@ @threadsan_cflags@ SANITIZER_LDFLAGS = @lto_ldflags@ @ubsan_ldflags@ @addrsan_ldflags@ @threadsan_ldflags@ CC = @PTHREAD_CC@ CXX = @CXX@ BUILD_CC = @BUILD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ CFLAGS = @CFLAGS@ CFLAGS_SHLIB = @CFLAGS_SHLIB@ CFLAGS_STLIB = @CFLAGS_STLIB@ CPPFLAGS = @INCLUDES@ ALL_CFLAGS = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS) ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_SHLIB) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS) ALL_CFLAGS_STLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_STLIB) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS) LDFLAGS = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS@ LDFLAGS_SHLIB = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS_SHLIB@ ALL_LDFLAGS = $(LDFLAGS) @LDFLAG_DYNAMIC@ $(LOCAL_LDFLAGS) LDFLAGS_STATIC = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS_STATIC@ BUILD_CFLAGS = $(SANITIZER_CFLAGS) @BUILD_CFLAGS@ BUILD_LDFLAGS = $(SANITIZER_LDFLAGS) @BUILD_LDFLAGS@ RDYNAMIC = @RDYNAMIC@ LINK_BUILD_FLAGS = @LINK_BUILD_FLAGS@ LINK_INSTALL_FLAGS = @LINK_INSTALL_FLAGS@ RM = @RM@ LN = @LN@ LN_S = @LN_S@ MV = @MV@ CP = @CP@ CHMOD = @CHMOD@ AR = @AR@ AWK = @AWK@ SED = @SED@ PERL = @PERL@ RANLIB = @RANLIB@ STRIP = @STRIP@ LD = $(PURE) @CC@ ARUPD = $(AR) r ARGEN = $(AR) rc LDCONFIG = @LDCONFIG@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ # # Library definitions # LIB = $(top_builddir)/lib LIBSS = $(LIB)/libss@LIB_EXT@ @PRIVATE_LIBS_CMT@ @DLOPEN_LIB@ LIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@ @PRIVATE_LIBS_CMT@ @SEM_INIT_LIB@ LIBE2P = $(LIB)/libe2p@LIB_EXT@ LIBEXT2FS = $(LIB)/libext2fs@LIB_EXT@ LIBUUID = @LIBUUID@ @SOCKET_LIB@ LIBMAGIC = @MAGIC_LIB@ LIBFUSE = @FUSE_LIB@ LIBSUPPORT = $(LIBINTL) $(LIB)/libsupport@STATIC_LIB_EXT@ LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID) LIBINTL = @LIBINTL@ LIBARCHIVE = @ARCHIVE_LIB@ SYSLIBS = @LIBS@ @PTHREAD_LIBS@ DEPLIBSS = $(LIB)/libss@LIB_EXT@ DEPLIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@ DEPLIBUUID = @DEPLIBUUID@ DEPLIBSUPPORT = $(LIB)/libsupport@STATIC_LIB_EXT@ DEPLIBBLKID = @DEPLIBBLKID@ @PRIVATE_LIBS_CMT@ $(DEPLIBUUID) TESTENV = LD_LIBRARY_PATH="$(LIB):$${LD_LIBRARY_PATH}" DYLD_LIBRARY_PATH="$(LIB):$${DYLD_LIBRARY_PATH}" STATIC_LIBSS = $(LIB)/libss@STATIC_LIB_EXT@ @DLOPEN_LIB@ STATIC_LIBCOM_ERR = $(LIB)/libcom_err@STATIC_LIB_EXT@ @SEM_INIT_LIB@ STATIC_LIBE2P = $(LIB)/libe2p@STATIC_LIB_EXT@ STATIC_LIBEXT2FS = $(LIB)/libext2fs@STATIC_LIB_EXT@ STATIC_LIBUUID = @STATIC_LIBUUID@ @SOCKET_LIB@ STATIC_LIBSUPPORT = $(LIBINTL) $(LIBSUPPORT) STATIC_LIBBLKID = @STATIC_LIBBLKID@ $(STATIC_LIBUUID) DEPSTATIC_LIBSS = $(LIB)/libss@STATIC_LIB_EXT@ DEPSTATIC_LIBCOM_ERR = $(LIB)/libcom_err@STATIC_LIB_EXT@ DEPSTATIC_LIBUUID = @DEPSTATIC_LIBUUID@ DEPSTATIC_LIBSUPPORT = $(DEPLIBSUPPORT) DEPSTATIC_LIBBLKID = @DEPSTATIC_LIBBLKID@ $(DEPSTATIC_LIBUUID) PROFILED_LIBSS = $(LIB)/libss@PROFILED_LIB_EXT@ @DLOPEN_LIB@ PROFILED_LIBCOM_ERR = $(LIB)/libcom_err@PROFILED_LIB_EXT@ @SEM_INIT_LIB@ PROFILED_LIBE2P = $(LIB)/libe2p@PROFILED_LIB_EXT@ PROFILED_LIBEXT2FS = $(LIB)/libext2fs@PROFILED_LIB_EXT@ PROFILED_LIBUUID = @PROFILED_LIBUUID@ @SOCKET_LIB@ PROFILED_LIBSUPPORT = $(LIBINTL) $(LIB)/libsupport@PROFILED_LIB_EXT@ PROFILED_LIBBLKID = @PROFILED_LIBBLKID@ $(PROFILED_LIBUUID) DEPPROFILED_LIBSS = $(LIB)/libss@PROFILED_LIB_EXT@ DEPPROFILED_LIBCOM_ERR = $(LIB)/libcom_err@PROFILED_LIB_EXT@ DEPPROFILED_LIBUUID = @PROFILED_LIBUUID@ DEPPROFILED_LIBSUPPORT = $(PROFILED_LIBSUPPORT) DEPPROFILED_LIBBLKID = @PROFILED_LIBBLKID@ $(DEPPROFILED_LIBUUID) # # A fast substitution command for fixing up man pages, shell scripts, etc. # SUBST_CONF=$(top_builddir)/util/subst.conf SUBSTITUTE= $(top_builddir)/util/subst -f $(SUBST_CONF) SUBSTITUTE_UPTIME= $(top_builddir)/util/subst -t -f $(SUBST_CONF) DEP_SUBSTITUTE= $(top_builddir)/util/subst $(SUBST_CONF) $(top_builddir)/util/subst: cd $(top_builddir)/util ; $(MAKE) subst # # Script for generating utf8data.h # MKUTF8DATA=$(top_builddir)/util/mkutf8data $(top_builddir)/util/mkutf8data: $(MAKE) -C $(top_builddir)/util mkutf8data # # Script for installing symlinks (for shared libraries) # $(top_builddir)/util/install-symlink: $(top_srcdir)/util/install-symlink.in \ $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=util/install-symlink ./config.status chmod +x $(top_builddir)/util/install-symlink $(top_builddir)/util/symlinks: cd $(top_builddir)/util ; $(MAKE) symlinks INSTALL_SYMLINK = /bin/sh $(top_builddir)/util/install-symlink \ @SYMLINK_RELATIVE@ \ --symlinks=$(top_builddir)/util/symlinks DEP_INSTALL_SYMLINK = $(top_builddir)/util/install-symlink \ $(top_builddir)/util/symlinks # # Warning flags # # Run make gcc-wall to do a build with warning messages. # # WFLAGS= -std=gnu99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE $(WFLAGS_EXTRA) \ -Wall -W -Wwrite-strings -Wpointer-arith \ -Wcast-qual -Wcast-align -Wno-variadic-macros \ -Wstrict-prototypes -Wmissing-prototypes \ -Wformat-security -Wformat-nonliteral \ -Wmissing-format-attribute -O2 -Wstrict-aliasing \ -Wnested-externs -Winline -DNO_INLINE_FUNCS -Wshadow \ -UENABLE_NLS gcc-wall-new: ($(MAKE) CFLAGS_WARN="$(WFLAGS)" > /dev/null) 2>&1 gcc-wall: $(MAKE) clean > /dev/null $(MAKE) gcc-wall-new static-check: ($(MAKE) C=1 V=1 CFLAGS="$(ALL_CFLAGS) $(WFLAGS)") 2>&1 static-check-all: $(MAKE) clean > /dev/null $(MAKE) static-check # # Installation user and groups # BINGRP= bin BINOWN= bin BINMODE= 555 INCGRP= bin INCOWN= bin INCMODE= 444 LIBOWN= bin LIBGRP= bin LIBMODE= 444 MANGRP= bin MANOWN= bin MANMODE= 444 # # Autoconf magic... # DEP_LIB_MAKEFILES = $(top_srcdir)/lib/Makefile.library \ $(top_srcdir)/lib/Makefile.elf-lib \ $(top_srcdir)/lib/Makefile.bsd-lib \ $(top_srcdir)/lib/Makefile.darwin-lib \ $(top_srcdir)/lib/Makefile.solaris-lib \ $(top_srcdir)/lib/Makefile.profile $(top_builddir)/config.status: $(top_srcdir)/configure cd $(top_builddir); ./config.status --recheck $(top_builddir)/MCONFIG: $(top_srcdir)/MCONFIG.in $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=MCONFIG ./config.status $(top_builddir)/lib/config.h: $(top_srcdir)/lib/config.h.in \ $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=lib/config.h ./config.status $(top_builddir)/lib/dirpaths.h: $(DEP_SUBSTITUTE) $(top_srcdir)/lib/dirpaths.h.in $(E) " SUBST $@" $(Q) $(SUBSTITUTE) $(top_srcdir)/lib/dirpaths.h.in $@ $(top_builddir)/lib/substitute_sh: $(top_srcdir)/lib/substitute_sh.in \ $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=lib/substitute_sh ./config.status $(top_builddir)/util/subst.conf: $(top_srcdir)/util/subst.conf.in \ $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=util/subst.conf ./config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/MCONFIG \ $(DEP_MAKEFILE) $(top_builddir)/config.status cd $(top_builddir); CONFIG_FILES=$(my_dir)/Makefile ./config.status @MAINTAINER_CMT@$(top_srcdir)/configure: $(top_srcdir)/configure.ac @MAINTAINER_CMT@ cd $(top_srcdir) && autoheader && autoconf coverage.txt: Makefile $(SRCS) if test -n "$(SRCS)"; then \ gcov -s $(top_srcdir) -o . $(SRCS) > coverage.txt 2>&1 ; \ fi clean:: $(RM) -f *.gcda *.gcov *.gcno coverage.txt # # Make depend magic... # .depend: Makefile $(SRCS) $(top_srcdir)/depfix.sed $(top_srcdir)/wordwrap.pl if test -n "$(SRCS)" ; then \ $(CC) -M $(ALL_CFLAGS) $(DEPEND_CFLAGS) $(SRCS) | \ $(SED) -f $(top_srcdir)/depfix.sed \ -e 's; $(srcdir)/; $$(srcdir)/;g' \ -e 's; $(top_srcdir)/; $$(top_srcdir)/;g' \ -e 's; $(top_builddir)/; $$(top_builddir)/;g' \ -e 's; \./; ;g' \ -e '/^#/d' \ -e '/^ *\\$$/d' | \ $(PERL) $(top_srcdir)/wordwrap.pl > .depend; \ else :; fi depend:: .depend if test -n "$(SRCS)" ; then \ sed -e '/^# +++ Dependency line eater +++/,$$d' \ < $(srcdir)/Makefile.in | cat - .depend \ > $(srcdir)/Makefile.in.new; \ if cmp -s $(srcdir)/Makefile.in $(srcdir)/Makefile.in.new ; then \ $(RM) $(srcdir)/Makefile.in.new ; \ else \ $(MV) $(srcdir)/Makefile.in $(srcdir)/Makefile.in.old; \ $(MV) $(srcdir)/Makefile.in.new $(srcdir)/Makefile.in; \ fi ; else :; fi # End of file MCONFIG e2fsprogs-1.47.3-rc1/Makefile.in000066400000000000000000000120471501560632700162610ustar00rootroot00000000000000srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ top_builddir = . my_dir = . INSTALL = @INSTALL@ MKDIR_P = @MKDIR_P@ @MCONFIG@ % : %.sh @RESIZER_CMT@RESIZE_DIR= resize @DEBUGFS_CMT@DEBUGFS_DIR= debugfs @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid @E2SCRUB_CMT@E2SCRUB_DIR= scrub @ALL_CMT@SUPPORT_LIB_SUBDIR= lib/support @ALL_CMT@E2P_LIB_SUBDIR= lib/e2p @ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \ $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs \ tests/fuzz po $(E2SCRUB_DIR) SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests SUBS= util/subst.conf lib/config.h $(top_builddir)/lib/dirpaths.h \ lib/ext2fs/ext2_types.h lib/blkid/blkid_types.h lib/uuid/uuid_types.h TAR=tar all:: top-deps $(MAKE) libs @ALL_CMT@ $(MAKE) progs @ALL_CMT@ $(MAKE) docs all-static:: $(MAKE) libs @ALL_CMT@ $(MAKE) static-progs top-deps: $(DEP_SUBSTITUTE) $(DEP_INSTALL_SYMLINK) @for i in $(SUBS) ; do if test -d `dirname $$i` ; \ then $(MAKE) $$i || exit $$? ; fi ; done @(if test -d lib/et ; then cd lib/et && $(MAKE) compile_et; fi) @(if test -d lib/ext2fs ; then cd lib/ext2fs && $(MAKE) ext2_err.h; fi) @(if test -d lib/support ; then cd lib/support && $(MAKE) prof_err.h; fi) progs: all-progs-recursive static-progs: all-static-progs-recursive libs: all-libs-recursive all-progs-recursive all-libs-recursive:: top-deps rpm: sh contrib/build-rpm docs: -@test -d doc && cd doc && $(MAKE) libext2fs.info install-doc-libs: -@test -d doc && cd doc && $(MAKE) install-doc-libs uninstall-doc-libs: -@test -d doc && cd doc && $(MAKE) uninstall-doc-libs clean-doc: -@test -d doc && cd doc && $(MAKE) clean distclean-doc: -test -d doc && cd doc && $(MAKE) distclean install: top-deps all-libs-recursive install-progs-recursive \ install-shlibs-libs-recursive install-doc-libs @SUBSET_CMT@ $(MAKE) install-libs install-strip: top-deps all-libs-recursive install-strip-progs-recursive \ install-shlibs-strip-libs-recursive install-doc-libs uninstall: uninstall-progs-recursive uninstall-shlibs-libs-recursive uninstall-doc-libs install-libs: install-libs-recursive uninstall-libs: uninstall-libs-recursive coverage.txt: coverage.txt-recursive check-recursive: all TAGS clean-recursive distclean-recursive depend-recursive fullcheck-recursive \ check-recursive mostlyclean-recursive realclean-recursive \ coverage.txt-recursive: @for subdir in $(SUBDIRS); do \ if test -d $$subdir ; then \ target=`echo $@|$(SED) 's/-recursive//'`; \ echo making $$target in $$subdir; \ (cd $$subdir && $(MAKE) $$target) || exit 1; \ fi ; \ done all-progs-recursive install-progs-recursive install-strip-progs-recursive \ uninstall-progs-recursive coverage.txt-progs-recursive:: all-libs-recursive @ALL_CMT@all-progs-recursive all-static-progs-recursive install-progs-recursive \ @ALL_CMT@ install-strip-progs-recursive uninstall-progs-recursive \ @ALL_CMT@ coverage.txt-progs-recursive:: all-libs-recursive @ALL_CMT@ @for subdir in $(PROG_SUBDIRS); do \ @ALL_CMT@ if test -d $$subdir ; then \ @ALL_CMT@ target=`echo $@|$(SED) 's/-progs-recursive//'`; \ @ALL_CMT@ echo making $$target in $$subdir; \ @ALL_CMT@ (cd $$subdir && $(MAKE) $$target) || exit 1; \ @ALL_CMT@ fi ; \ @ALL_CMT@ done all-libs-recursive install-libs-recursive install-strip-libs-recursive \ uninstall-libs-recursive install-shlibs-libs-recursive \ install-shlibs-strip-libs-recursive uninstall-shlibs-libs-recursive \ coverage.txt-libs-recursive:: @for subdir in $(LIB_SUBDIRS); do \ if test -d $$subdir ; then \ target=`echo $@|$(SED) 's/-libs-recursive//'`; \ echo making $$target in $$subdir; \ (cd $$subdir && $(MAKE) $$target) || exit 1; \ fi ; \ done mostlyclean: mostlyclean-recursive mostlyclean-local clean:: clean-recursive clean-local clean-doc $(RM) -f $(SUBS) distclean: distclean-doc distclean-recursive $(RM) -rf autom4te.cache ext2ed/Makefile po/stamp-po \ asm_types.h config.log public_config.h parse-types.log $(MAKE) distclean-local realclean: realclean-recursive realclean-local depend:: depend-recursive lib/ext2fs/ext2_types.h: $(DEP_SUBSTITUTE) asm_types.h \ $(srcdir)/lib/ext2fs/ext2_types.h.in cd $(top_builddir); CONFIG_FILES=./lib/ext2fs/ext2_types.h ./config.status lib/blkid/blkid_types.h: $(DEP_SUBSTITUTE) asm_types.h \ $(srcdir)/lib/blkid/blkid_types.h.in cd $(top_builddir); CONFIG_FILES=./lib/blkid/blkid_types.h ./config.status lib/uuid/uuid_types.h: $(DEP_SUBSTITUTE) asm_types.h \ $(srcdir)/lib/uuid/uuid_types.h.in cd $(top_builddir); CONFIG_FILES=./lib/uuid/uuid_types.h ./config.status mostlyclean-local: $(RM) -f \#* *~ *.orig core MAKELOG clean-local: mostlyclean-local distclean-local: clean-local $(RM) -f $(SUBS) $(SUBST_CONF) \ config.status config.log config.cache MCONFIG Makefile \ $(srcdir)/TAGS $(srcdir)/Makefile.in.old realclean-local: distclean-local $(RM) -f configure check:: all check-recursive fullcheck:: all fullcheck-recursive e2fsprogs-1.47.3-rc1/NOTICE000066400000000000000000001270511501560632700151220ustar00rootroot00000000000000This package, the EXT2 filesystem utilities, are made available under the GNU Public License version 2, with the exception of the lib/ext2fs and lib/e2p libraries, which are made available under the GNU Library General Public License Version 2, the lib/uuid library which is made available under a BSD-style license and the lib/et and lib/ss libraries which are made available under an MIT-style license. Please see lib/uuid/COPYING for more details for the license for the files comprising the libuuid library, and the source file headers of the libet and libss libraries for more information. The most recent officially distributed version can be found at http://e2fsprogs.sourceforge.net. If you need to make a distribution, that's the one you should use. If there is some reason why you'd like a more recent version that is still in ALPHA testing (i.e., either using the "WIP" test distributions or one from the hg or git repository from the development branch, please contact me (tytso@mit.edu) before you ship. The release schedules for this package are flexible, if you give me enough lead time. Theodore Ts'o 23-June-2007 ---------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ---------------------------------------------------------------------- GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! e2fsprogs-1.47.3-rc1/README000066400000000000000000000013171501560632700150720ustar00rootroot00000000000000 This is the new version (1.47.3) of the second extended file system management programs. From time to time, I release new versions of e2fsprogs, to fix bugs and to make the utilities more robust. You can always find information about the latest version at the the e2fsprogs web page, which is: http://e2fsprogs.sourceforge.net The INSTALL file has instructions on building and installing e2fsprogs. Provisions for building Red Hat RPMs and Debian dpkg files are supplied as well. In case of bugs in these programs, please contact Ted Ts'o at tytso@mit.edu or tytso@alum.mit.edu. See the e2fsck man page for suggestions of what sort of information to include when submitting bug reports for these programs. e2fsprogs-1.47.3-rc1/RELEASE-NOTES000077700000000000000000000000001501560632700220552doc/RelNotes/v1.47.3.txtustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/SHLIBS000066400000000000000000000013731501560632700151230ustar00rootroot00000000000000Library:libcom_err.o Description: Common error code library Maintainer: Theodore Ts'o Email: tytso@mit.edu Start: 0x66800000 End: 0x6687ffff Library:libss.o Description: Generic Subsystem library (Simple tty UI) Maintainer: Theodore Ts'o Email: tytso@mit.edu Start: 0x66880000 End: 0x668fffff Library:libext2fs.so Description: The ext2fs (raw interface) library Maintainer: Theodore Ts'o Email: tytso@mit.edu Start: 0x66900000 End: 0x6697ffff Library:libe2p.so Description: The e2p (ext2fs's programmers) library Maintainer: Theodore Ts'o Email: tytso@mit.edu Start: 0x66980000 End: 0x669fffff Library:libuuid.so Description: DCE Universally Unique ID (UUID) library Maintainer: Theodore Ts'o Email: tytso@mit.edu Start: 0x67900000 End: 0x679fffff e2fsprogs-1.47.3-rc1/SUBMITTING-PATCHES000066400000000000000000000032361501560632700167110ustar00rootroot00000000000000 Like the Linux kernel, submitted e2fsprogs patches now require the following "sign-off" procedure: The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as a open-source patch. The rules are pretty simple: if you can certify the below: Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. then you just add a line saying Signed-off-by: Random J Developer e2fsprogs-1.47.3-rc1/acinclude.m4000066400000000000000000000147341501560632700164120ustar00rootroot00000000000000# from http://autoconf-archive.cryp.to/ax_tls.html # # This was licensed under the GPL with the following exception: # # As a special exception, the respective Autoconf Macro's copyright # owner gives unlimited permission to copy, distribute and modify the # configure scripts that are the output of Autoconf when processing # the Macro. You need not follow the terms of the GNU General Public # License when using or distributing such scripts, even though # portions of the text of the Macro appear in them. The GNU General # Public License (GPL) does govern all other use of the material that # constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the # Autoconf Macro released by the Autoconf Macro Archive. When you make # and distribute a modified version of the Autoconf Macro, you may # extend this special exception to the GPL to apply to your modified # version as well. # AC_DEFUN([AX_TLS], [ AC_MSG_CHECKING(for thread local storage (TLS) class) AC_CACHE_VAL(ac_cv_tls, [ ax_tls_keywords="__thread __declspec(thread) none" for ax_tls_keyword in $ax_tls_keywords; do case $ax_tls_keyword in none) ac_cv_tls=none ; break ;; *) AC_TRY_COMPILE( [#include static void foo(void) { static ] $ax_tls_keyword [ int bar; exit(1); }], [], [ac_cv_tls=$ax_tls_keyword ; break], ac_cv_tls=none ) esac done ]) if test "$ac_cv_tls" != "none"; then dnl AC_DEFINE([TLS], [], [If the compiler supports a TLS storage class define it to that here]) AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here]) fi AC_MSG_RESULT($ac_cv_tls) ]) # =========================================================================== # http://www.nongnu.org/autoconf-archive/check_gnu_make.html # =========================================================================== # # SYNOPSIS # # CHECK_GNU_MAKE() # # DESCRIPTION # # This macro searches for a GNU version of make. If a match is found, the # makefile variable `ifGNUmake' is set to the empty string, otherwise it # is set to "#". This is useful for including a special features in a # Makefile, which cannot be handled by other versions of make. The # variable _cv_gnu_make_command is set to the command to invoke GNU make # if it exists, the empty string otherwise. # # Here is an example of its use: # # Makefile.in might contain: # # # A failsafe way of putting a dependency rule into a makefile # $(DEPEND): # $(CC) -MM $(srcdir)/*.c > $(DEPEND) # # @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND))) # @ifGNUmake@ include $(DEPEND) # @ifGNUmake@ endif # # Then configure.in would normally contain: # # CHECK_GNU_MAKE() # AC_OUTPUT(Makefile) # # Then perhaps to cause gnu make to override any other make, we could do # something like this (note that GNU make always looks for GNUmakefile # first): # # if ! test x$_cv_gnu_make_command = x ; then # mv Makefile GNUmakefile # echo .DEFAULT: > Makefile ; # echo \ $_cv_gnu_make_command \$@ >> Makefile; # fi # # Then, if any (well almost any) other make is called, and GNU make also # exists, then the other make wraps the GNU make. # # LICENSE # # Copyright (c) 2008 John Darrington # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. # # Note: Modified by Ted Ts'o to add @ifNotGNUMake@ AC_DEFUN( [CHECK_GNU_MAKE], [ AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command, _cv_gnu_make_command='' ; dnl Search all the common names for GNU make if test -n "$FORCE_NATIVE_MAKE" ; then MAKES="make" else MAKES="make gmake gnumake" fi for a in "$MAKE" $MAKES ; do if test -z "$a" ; then continue ; fi ; if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then _cv_gnu_make_command=$a ; break; fi done ; ) ; dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise if test "x$_cv_gnu_make_command" != "x" ; then ifGNUmake='' ; ifNotGNUmake='#' ; else ifGNUmake='#' ; ifNotGNUmake='' ; AC_MSG_RESULT("Not found"); fi AC_SUBST(ifGNUmake) AC_SUBST(ifNotGNUmake) ] ) # AX_CHECK_MOUNT_OPT: an autoconf macro to check for generic filesystem- # agnostic 'mount' options. Written by Nicholas Clark. Looks for constants in # sys/mount.h to predict whether the 'mount' utility will support a specific # mounting option. # # This macro can be used to check for the presence of 'nodev' (or other mount # options), which isn't uniformly implemented in the BSD family at the time of # this writing. Tested on FreeBSD, NetBSD, OpenBSD, and Linux. # # Usage: # # AX_CHECK_MOUNT_OPT(option) # # Defines HAVE_MOUNT_$OPTION (in uppercase) if the option exists, and sets # ac_cv_mount_$option (in original case) otherwise. # # Copyright (c) 2018 Nicholas Clark # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty or attribution requirement. AC_DEFUN([AX_CHECK_MOUNT_OPT], [__AX_CHECK_MOUNT_OPT(m4_tolower([$1]),m4_toupper([$1]))]) AC_DEFUN([__AX_CHECK_MOUNT_OPT], [ AS_ECHO_N("checking for mount '$1' option... ") AC_TRY_COMPILE( [#include ], [void *temp = (void *)(MS_$2); (void) temp;], [AC_DEFINE(HAVE_MOUNT_$2, 1, [Define to 1 if mount supports $1.]) AS_VAR_SET(ac_cv_mount_$1, yes) AS_ECHO("yes")], [AC_TRY_COMPILE( [#include ], [void *temp = (void *)(MNT_$2); (void) temp;], [AC_DEFINE(HAVE_MOUNT_$2, 1, [Define to 1 if mount supports $1.]) AS_VAR_SET(ac_cv_mount_$1, yes) AS_ECHO("yes")], [AS_VAR_SET(ac_cv_mount_$1, no) AS_ECHO("no")] )] ) ]) e2fsprogs-1.47.3-rc1/aclocal.m4000066400000000000000000004725731501560632700160720ustar00rootroot00000000000000# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro figures out how to build C programs using POSIX threads. It # sets the PTHREAD_LIBS output variable to the threads library and linker # flags, and the PTHREAD_CFLAGS output variable to any special C compiler # flags that are needed. (The user can also force certain compiler # flags/libs to be tested by setting these environment variables.) # # Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is # needed for multi-threaded programs (defaults to the value of CC # respectively CXX otherwise). (This is necessary on e.g. AIX to use the # special cc_r/CC_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, # but also to link with them as well. For example, you might link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # # If you are only building threaded programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" # CC="$PTHREAD_CC" # CXX="$PTHREAD_CXX" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to # that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # PTHREAD_PRIO_INHERIT symbol is defined when compiling with # PTHREAD_CFLAGS. # # ACTION-IF-FOUND is a list of shell commands to run if a threads library # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it # is not found. If ACTION-IF-FOUND is not specified, the default action # will define HAVE_PTHREAD. # # Please let the authors know if this macro fails on any platform, or if # you have any other suggestions or comments. This macro was based on work # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by # Alejandro Forero Cuervo to the autoconf macro repository. We are also # grateful for the helpful feedback of numerous users. # # Updated for Autoconf 2.68 by Daniel Richard G. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2011 Daniel Richard G. # Copyright (c) 2019 Marc Stevens # # This program 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 3 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, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 31 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_PROG_SED]) AC_LANG_PUSH([C]) ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on Tru64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ax_pthread_save_CC="$CC" ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) AC_MSG_RESULT([$ax_pthread_ok]) if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi CC="$ax_pthread_save_CC" CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items with a "," contain both # C compiler flags (before ",") and linker flags (after ","). Other items # starting with a "-" are C compiler flags, and remaining items are # library names, except for "none" which indicates that we try without # any flags at all, and "pthread-config" which is a program returning # the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 # (Note: HP C rejects this with "bad form for `-t' option") # -pthreads: Solaris/gcc (Note: HP C also rejects) # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads and # -D_REENTRANT too), HP C (must be checked before -lpthread, which # is present but should not be used directly; and before -mthreads, # because the compiler interprets this as "-mt" + "-hreads") # -mthreads: Mingw32/gcc, Lynx/gcc # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case $host_os in freebsd*) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) ax_pthread_flags="-kthread lthread $ax_pthread_flags" ;; hpux*) # From the cc(1) man page: "[-mt] Sets various -D flags to enable # multi-threading and also sets -lpthread." ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" ;; openedition*) # IBM z/OS requires a feature-test macro to be defined in order to # enable POSIX threads at all, so give the user a hint if this is # not set. (We don't define these ourselves, as they can affect # other portions of the system API in unpredictable ways.) AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], [ # if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) AX_PTHREAD_ZOS_MISSING # endif ], [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) ;; solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (N.B.: The stubs are missing # pthread_cleanup_push, or rather a function called by this macro, # so we could check for that, but who knows whether they'll stub # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac # Are we compiling with Clang? AC_CACHE_CHECK([whether $CC is Clang], [ax_cv_PTHREAD_CLANG], [ax_cv_PTHREAD_CLANG=no # Note that Autoconf sets GCC=yes for Clang as well as GCC if test "x$GCC" = "xyes"; then AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ # if defined(__clang__) && defined(__llvm__) AX_PTHREAD_CC_IS_CLANG # endif ], [ax_cv_PTHREAD_CLANG=yes]) fi ]) ax_pthread_clang="$ax_cv_PTHREAD_CLANG" # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) # Note that for GCC and Clang -pthread generally implies -lpthread, # except when -nostdlib is passed. # This is problematic using libtool to build C++ shared libraries with pthread: # [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 # [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 # [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 # To solve this, first try -pthread together with -lpthread for GCC AS_IF([test "x$GCC" = "xyes"], [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) # Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first AS_IF([test "x$ax_pthread_clang" = "xyes"], [ax_pthread_flags="-pthread,-lpthread -pthread"]) # The presence of a feature test macro requesting re-entrant function # definitions is, on some systems, a strong hint that pthreads support is # correctly enabled case $host_os in darwin* | hpux* | linux* | osf* | solaris*) ax_pthread_check_macro="_REENTRANT" ;; aix*) ax_pthread_check_macro="_THREAD_SAFE" ;; *) ax_pthread_check_macro="--" ;; esac AS_IF([test "x$ax_pthread_check_macro" = "x--"], [ax_pthread_check_cond=0], [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do case $ax_pthread_try_flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; *,*) PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_LINK_IFELSE([AC_LANG_PROGRAM([#include # if $ax_pthread_check_cond # error "$ax_pthread_check_macro must be defined" # endif static void *some_global = NULL; static void routine(void *a) { /* To avoid any unused-parameter or unused-but-set-parameter warning. */ some_global = a; } static void *start_routine(void *a) { return a; }], [pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */])], [ax_pthread_ok=yes], []) CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" AC_MSG_RESULT([$ax_pthread_ok]) AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Clang needs special handling, because older versions handle the -pthread # option in a rather... idiosyncratic way if test "x$ax_pthread_clang" = "xyes"; then # Clang takes -pthread; it has never supported any other flag # (Note 1: This will need to be revisited if a system that Clang # supports has POSIX threads in a separate library. This tends not # to be the way of modern systems, but it's conceivable.) # (Note 2: On some systems, notably Darwin, -pthread is not needed # to get POSIX threads support; the API is always present and # active. We could reasonably leave PTHREAD_CFLAGS empty. But # -pthread does define _REENTRANT, and while the Darwin headers # ignore this macro, third-party headers might not.) # However, older versions of Clang make a point of warning the user # that, in an invocation where only linking and no compilation is # taking place, the -pthread option has no effect ("argument unused # during compilation"). They expect -pthread to be passed in only # when source code is being compiled. # # Problem is, this is at odds with the way Automake and most other # C build frameworks function, which is that the same flags used in # compilation (CFLAGS) are also used in linking. Many systems # supported by AX_PTHREAD require exactly this for POSIX threads # support, and in fact it is often not straightforward to specify a # flag that is used only in the compilation phase and not in # linking. Such a scenario is extremely rare in practice. # # Even though use of the -pthread flag in linking would only print # a warning, this can be a nuisance for well-run software projects # that build with -Werror. So if the active version of Clang has # this misfeature, we search for an option to squash it. AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown # Create an alternate version of $ac_link that compiles and # links in two steps (.c -> .o, .o -> exe) instead of one # (.c -> exe), because the warning occurs only in the second # step ax_pthread_save_ac_link="$ac_link" ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" ax_pthread_save_CFLAGS="$CFLAGS" for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" ac_link="$ax_pthread_save_ac_link" AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], [ac_link="$ax_pthread_2step_ac_link" AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], [break]) ]) done ac_link="$ax_pthread_save_ac_link" CFLAGS="$ax_pthread_save_CFLAGS" AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" ]) case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in no | unknown) ;; *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; esac fi # $ax_pthread_clang = yes # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_CACHE_CHECK([for joinable pthread attribute], [ax_cv_PTHREAD_JOINABLE_ATTR], [ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], [int attr = $ax_pthread_attr; return attr /* ; */])], [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], []) done ]) AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ test "x$ax_pthread_joinable_attr_defined" != "xyes"], [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$ax_cv_PTHREAD_JOINABLE_ATTR], [Define to necessary symbol if this constant uses a non-standard name on your system.]) ax_pthread_joinable_attr_defined=yes ]) AC_CACHE_CHECK([whether more special flags are required for pthreads], [ax_cv_PTHREAD_SPECIAL_FLAGS], [ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ;; esac ]) AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ test "x$ax_pthread_special_flags_added" != "xyes"], [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ax_pthread_special_flags_added=yes]) AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], [ax_cv_PTHREAD_PRIO_INHERIT], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT; return i;]])], [ax_cv_PTHREAD_PRIO_INHERIT=yes], [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ test "x$ax_pthread_prio_inherit_defined" != "xyes"], [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) ax_pthread_prio_inherit_defined=yes ]) CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" # More AIX lossage: compile with *_r variant if test "x$GCC" != "xyes"; then case $host_os in aix*) AS_CASE(["x/$CC"], [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], [#handle absolute path differently from PATH based program lookup AS_CASE(["x$CC"], [x/*], [ AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) ], [ AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) ] ) ]) ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" AC_SUBST([PTHREAD_LIBS]) AC_SUBST([PTHREAD_CFLAGS]) AC_SUBST([PTHREAD_CC]) AC_SUBST([PTHREAD_CXX]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "x$ax_pthread_ok" = "xyes"; then ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else ax_pthread_ok=no $2 fi AC_LANG_POP ])dnl AX_PTHREAD # gettext.m4 serial 71 (gettext-0.20.2) dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL must be one of 'external', 'use-libtool'. dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. ])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], [no], [yes])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' dnl because some of the testsuite requires it. BUILD_INCLUDED_LIBINTL=yes dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) # host-cpu-c-abi.m4 serial 13 dnl Copyright (C) 2002-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible and Sam Steingold. dnl Sets the HOST_CPU variable to the canonical name of the CPU. dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its dnl C language ABI (application binary interface). dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in dnl config.h. dnl dnl This canonical name can be used to select a particular assembly language dnl source file that will interoperate with C code on the given host. dnl dnl For example: dnl * 'i386' and 'sparc' are different canonical names, because code for i386 dnl will not run on SPARC CPUs and vice versa. They have different dnl instruction sets. dnl * 'sparc' and 'sparc64' are different canonical names, because code for dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit dnl mode, but not both. dnl * 'mips' and 'mipsn32' are different canonical names, because they use dnl different argument passing and return conventions for C functions, and dnl although the instruction set of 'mips' is a large subset of the dnl instruction set of 'mipsn32'. dnl * 'mipsn32' and 'mips64' are different canonical names, because they use dnl different sizes for the C types like 'int' and 'void *', and although dnl the instruction sets of 'mipsn32' and 'mips64' are the same. dnl * The same canonical name is used for different endiannesses. You can dnl determine the endianness through preprocessor symbols: dnl - 'arm': test __ARMEL__. dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because dnl - Instructions that do not exist on all of these CPUs (cmpxchg, dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your dnl assembly language source files use such instructions, you will dnl need to make the distinction. dnl - Speed of execution of the common instruction set is reasonable across dnl the entire family of CPUs. If you have assembly language source files dnl that are optimized for particular CPU types (like GNU gmp has), you dnl will need to make the distinction. dnl See . AC_DEFUN([gl_HOST_CPU_C_ABI], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_C_ASM]) AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], [case "$host_cpu" in changequote(,)dnl i[34567]86 ) changequote([,])dnl gl_cv_host_cpu_c_abi=i386 ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=x86_64-x32], [gl_cv_host_cpu_c_abi=x86_64])], [gl_cv_host_cpu_c_abi=i386]) ;; changequote(,)dnl alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) changequote([,])dnl gl_cv_host_cpu_c_abi=alpha ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __aarch64__ int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=arm64-ilp32], [gl_cv_host_cpu_c_abi=arm64])], [# Don't distinguish little-endian and big-endian arm, since they # don't require different machine code for simple operations and # since the user can distinguish them through the preprocessor # defines __ARMEL__ vs. __ARMEB__. # But distinguish arm which passes floating-point arguments and # return values in integer registers (r0, r1, ...) - this is # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which # passes them in float registers (s0, s1, ...) and double registers # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer # sets the preprocessor defines __ARM_PCS (for the first case) and # __ARM_PCS_VFP (for the second case), but older GCC does not. echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c # Look for a reference to the register d0 in the .s file. AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then gl_cv_host_cpu_c_abi=armhf else gl_cv_host_cpu_c_abi=arm fi rm -f conftest* ]) ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __LP64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=hppa64], [gl_cv_host_cpu_c_abi=hppa]) ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=ia64-ilp32], [gl_cv_host_cpu_c_abi=ia64]) ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mips64], [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIN32. # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIO32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (_MIPS_SIM == _ABIN32) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mipsn32], [gl_cv_host_cpu_c_abi=mips])]) ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif ]])], [# On powerpc64, there are two ABIs on Linux: The AIX compatible # one and the ELFv2 one. The latter defines _CALL_ELF=2. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _CALL_ELF && _CALL_ELF == 2 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=powerpc64-elfv2], [gl_cv_host_cpu_c_abi=powerpc64]) ], [gl_cv_host_cpu_c_abi=powerpc]) ;; rs6000 ) gl_cv_host_cpu_c_abi=powerpc ;; riscv32 | riscv64 ) # There are 2 architectures (with variants): rv32* and rv64*. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if __riscv_xlen == 64 int ok; #else error fail #endif ]])], [cpu=riscv64], [cpu=riscv32]) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ int ok; #else error fail #endif ]])], [main_abi=lp64], [main_abi=ilp32]) # Float ABIs: # __riscv_float_abi_double: # 'float' and 'double' are passed in floating-point registers. # __riscv_float_abi_single: # 'float' are passed in floating-point registers. # __riscv_float_abi_soft: # No values are passed in floating-point registers. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_double int ok; #else error fail #endif ]])], [float_abi=d], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_single int ok; #else error fail #endif ]])], [float_abi=f], [float_abi='']) ]) gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=s390x], [gl_cv_host_cpu_c_abi=s390]) ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=sparc64], [gl_cv_host_cpu_c_abi=sparc]) ;; *) gl_cv_host_cpu_c_abi="$host_cpu" ;; esac ]) dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" AC_SUBST([HOST_CPU]) AC_SUBST([HOST_CPU_C_ABI]) # This was # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) # earlier, but KAI C++ 3.2d doesn't like this. sed -e 's/-/_/g' >> confdefs.h < #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) else dnl When compiling GNU libiconv on a system that does not have iconv yet, dnl pick the POSIX compliant declaration without 'const'. am_cv_proto_iconv_arg1="" fi AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) ]) # intlmacosx.m4 serial 8 (gettext-0.20.2) dnl Copyright (C) 2004-2014, 2016, 2019-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.4. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, dnl because in macOS 10.13.4 it has the following behaviour: dnl When two or more languages are specified in the dnl "System Preferences > Language & Region > Preferred Languages" panel, dnl it returns en_CC where CC is the territory (even when English is not among dnl the preferred languages!). What we want instead is what dnl CFLocaleCopyCurrent returned in earlier macOS releases and what dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the dnl first among the preferred languages and CC is the territory. AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyPreferredLanguages();]])], [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) # lib-ld.m4 serial 9 dnl Copyright (C) 1996-2003, 2009-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then AC_MSG_CHECKING([for ld]) elif test "$GCC" = yes; then AC_MSG_CHECKING([for ld used by $CC]) elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi if test -n "$LD"; then # Let the user override the test with a path. : else AC_CACHE_VAL([acl_cv_path_LD], [ acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) AC_ARG_WITH(PACK[-prefix], [[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi ]) if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then dnl Really add $dependency_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then dnl Really add $dependency_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2" \ && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2" \ && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) # lib-prefix.m4 serial 17 dnl Copyright (C) 2001-2005, 2008-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib-prefix], [[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a function acl_is_expected_elfclass, that tests whether standard input dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing dnl the basename of the libdir to try in turn, either "lib" or "lib64" or dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib, lib32, and lib64. dnl On most glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. dnl We determine the compiler's default mode by looking at the compiler's dnl library search path. If at least one of its elements ends in /lib64 or dnl points to a directory whose absolute pathname ends in /lib64, we use that dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, dnl namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], [AC_EGREP_CPP([Extensible Linking Format], [#ifdef __ELF__ Extensible Linking Format #endif ], [gl_cv_elf=yes], [gl_cv_elf=no]) ]) if test $gl_cv_elf; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then # Use POSIX od. func_elfclass () { od -A n -t d1 -j 4 -N 1 } else # Use BSD hexdump. func_elfclass () { dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' echo } fi changequote(,)dnl case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 } ;; *) # Unknown. acl_is_expected_elfclass () { : } ;; esac changequote([,])dnl else acl_is_expected_elfclass () { : } fi dnl Allow the user to override the result by setting acl_cv_libdirstems. AC_CACHE_CHECK([for the common suffixes of directories in the library search path], [acl_cv_libdirstems], [dnl Try 'lib' first, because that's the default for libdir in GNU, see dnl . acl_libdirstem=lib acl_libdirstem2= acl_libdirstem3= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. if test $HOST_CPU_C_ABI_32BIT = no; then acl_libdirstem2=lib/64 case "$host_cpu" in sparc*) acl_libdirstem3=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; esac fi ;; *) dnl If $CC generates code for a 32-bit ABI, the libraries are dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. dnl Find the compiler's search path. However, non-system compilers dnl sometimes have odd library search paths. But we can't simply invoke dnl '/usr/bin/gcc -print-search-dirs' because that would not take into dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test $HOST_CPU_C_ABI_32BIT != no; then # 32-bit or unknown ABI. if test -d /usr/lib32; then acl_libdirstem2=lib32 fi fi if test $HOST_CPU_C_ABI_32BIT != yes; then # 64-bit or unknown ABI. if test -d /usr/lib64; then acl_libdirstem3=lib64 fi fi if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib32 ) acl_libdirstem2=lib32 ;; */lib64 ) acl_libdirstem3=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= fi if test $HOST_CPU_C_ABI_32BIT = no; then # 64-bit ABI. acl_libdirstem2= fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" ]) dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and dnl acl_libdirstem3. changequote(,)dnl acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` changequote([,])dnl ]) # nls.m4 serial 6 (gettext-0.20.2) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2020 Free dnl Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) # pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES # po.m4 serial 31 (gettext-0.20.2) dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Lesser General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Lesser General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.20]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Test whether it is GNU msgmerge >= 0.20. if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' else dnl Test whether it is GNU msgmerge >= 0.12. if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' else dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is dnl slow. But this is not a big problem, as such old gettext versions are dnl hardly in use any more. MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' fi fi AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) m4_include([acinclude.m4]) e2fsprogs-1.47.3-rc1/config/000077500000000000000000000000001501560632700154555ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/config/config.guess000077500000000000000000001430671501560632700200100ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2024 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2024-07-27' # 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 3 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, see . # # 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system '$me' is run on. Options: -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 1992-2024 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 # Just in case it came from the environment. GUESS= # 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. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c17 c99 c89 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver 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 } # 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 ; 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 case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #if defined(__ANDROID__) LIBC=android #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #elif defined(__LLVM_LIBC__) LIBC=llvm #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # 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 tuples: *-*-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". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-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) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ 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 # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; 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/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 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. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; 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. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; 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'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; 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) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # 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:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) 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; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int 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 GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) 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 test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 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 test -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 test "$HP_ARCH" = ""; then 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 test "$HP_ARCH" = hppa2.0w then 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 -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) 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; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; 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*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; 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:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; 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/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 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/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __ARM_EABI__ #ifdef __ARM_PCS_VFP ABI=eabihf #else ABI=eabi #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; esac fi GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` 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 -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:cos:*:*) GUESS=$UNAME_MACHINE-unknown-cos ;; kvx:mbr:*:*) GUESS=$UNAME_MACHINE-unknown-mbr ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; 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. GUESS=i386-sequent-sysv4 ;; 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. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; 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 GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; 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 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; 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 i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; 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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' 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; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *: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 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; *:Ironclad:*:*) GUESS=$UNAME_MACHINE-unknown-ironclad ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif int 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 (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 #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #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; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&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 fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: e2fsprogs-1.47.3-rc1/config/config.rpath000077500000000000000000000442161501560632700177740ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2016 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) wl= ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd[23].*) library_names_spec='$libname$shrext$versuffix' ;; freebsd* | dragonfly*) library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. # # 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. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # 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. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # 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. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -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 1992-2024 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 ;; *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 # Split fields of configuration type saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in cloudabi*-eabi* \ | kfreebsd*-gnu* \ | knetbsd*-gnu* \ | kopensolaris*-gnu* \ | linux-* \ | managarm-* \ | netbsd*-eabi* \ | netbsd*-gnu* \ | nto-qnx* \ | os2-emx* \ | rtmk-nova* \ | storm-chaos* \ | uclinux-gnu* \ | uclinux-uclibc* \ | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) case $field1-$field2 in # Shorthands that happen to contain a single dash convex-c[12] | convex-c3[248]) basic_machine=$field2-convex basic_os= ;; decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Do not treat sunos as a manufacturer sun*os*) basic_machine=$field1 basic_os=$field2 ;; # Manufacturers 3100* \ | 32* \ | 3300* \ | 3600* \ | 7300* \ | acorn \ | altos* \ | apollo \ | apple \ | atari \ | att* \ | axis \ | be \ | bull \ | cbm \ | ccur \ | cisco \ | commodore \ | convergent* \ | convex* \ | cray \ | crds \ | dec* \ | delta* \ | dg \ | digital \ | dolphin \ | encore* \ | gould \ | harris \ | highlevel \ | hitachi* \ | hp \ | ibm* \ | intergraph \ | isi* \ | knuth \ | masscomp \ | microblaze* \ | mips* \ | motorola* \ | ncr* \ | news \ | next \ | ns \ | oki \ | omron* \ | pc533* \ | rebel \ | rom68k \ | rombug \ | semi \ | sequent* \ | siemens \ | sgi* \ | siemens \ | sim \ | sni \ | sony* \ | stratus \ | sun \ | sun[234]* \ | tektronix \ | tti* \ | ultra \ | unicom* \ | wec \ | winbond \ | wrs) basic_machine=$field1-$field2 basic_os= ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # 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) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) cpu=m68k vendor=motorola ;; # This used to be dpx2*, but that gets the RS6000-based # DPX/20 and the x86-based DPX/2-100 wrong. See # https://oldskool.silicium.org/stations/bull_dpx20.htm # https://www.feb-patrimoine.com/english/bull_dpx2.htm # https://www.feb-patrimoine.com/english/unix_and_bull.htm dpx2 | dpx2[23]00 | dpx2[23]xx) cpu=m68k vendor=bull ;; dpx2100 | dpx21xx) cpu=i386 vendor=bull ;; dpx20) cpu=rs6000 vendor=bull ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x"$basic_os" != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. obj= case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) saved_IFS=$IFS IFS="-" read kernel os <&2 fi ;; *) echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 exit 1 ;; esac case $obj in aout* | coff* | elf* | pe*) ;; '') # empty is fine ;; *) echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 exit 1 ;; esac # Here we handle the constraint that a (synthetic) cpu and os are # valid only in combination with each other and nowhere else. case $cpu-$os in # The "javascript-unknown-ghcjs" triple is used by GHC; we # accept it here in order to tolerate that, but reject any # variations. javascript-ghcjs) ;; javascript-* | *-ghcjs) echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os-$obj in linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ | linux-mlibc*- | linux-musl*- | linux-newlib*- \ | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) ;; uclinux-uclibc*- | uclinux-gnu*- ) ;; managarm-mlibc*- | managarm-kernel*- ) ;; windows*-msvc*-) ;; -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel*- ) echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel*- ) echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; *-msvc*- ) echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; nto-qnx*-) ;; os2-emx-) ;; rtmk-nova-) ;; *-eabi*- | *-gnueabi*-) ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format ;; -*-) # Blank kernel with real OS is always fine. ;; --*) # Blank kernel and OS with real machine code file format is always fine. ;; *-*-*) echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos* | *-solaris*) vendor=sun ;; *-cnk* | *-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 ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) 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 ;; esac echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: e2fsprogs-1.47.3-rc1/config/install-sh000077500000000000000000000357761501560632700175030ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # 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. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # 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 $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: e2fsprogs-1.47.3-rc1/config/ltmain.sh000066400000000000000000011767121501560632700173140ustar00rootroot00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-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. # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-9" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-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. # This program 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 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-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. # This program 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 3 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, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd _G_rc_run_hooks=false case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do if eval $_G_hook '"$@"'; then # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift _G_rc_run_hooks=: fi done $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, you may remove/edit # any options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. In this case you also must return $EXIT_SUCCESS to let the # hook's caller know that it should pay attention to # '_result'. Returning $EXIT_FAILURE signalizes that # arguments are left untouched by the hook and therefore caller will ignore the # result variable. # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). There is # # no need to do the equivalent (but slower) action: # # func_quote_for_eval ${1+"$@"} # # my_options_prep_result=$func_quote_for_eval_result # false # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@", we could need that later # # if $args_changed is true. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # if $args_changed; then # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # fi # # $args_changed # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # false # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd _G_func_options_finish_exit=false if func_run_hooks func_options ${1+"$@"}; then func_options_finish_result=$func_run_hooks_result _G_func_options_finish_exit=: fi $_G_func_options_finish_exit } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_rc_options=false for my_func in options_prep parse_options validate_options options_finish do if eval func_$my_func '${1+"$@"}'; then eval _G_res_var='$'"func_${my_func}_result" eval set dummy "$_G_res_var" ; shift _G_rc_options=: fi done # Save modified positional parameters for caller. As a top-level # options-parser function we always need to set the 'func_options_result' # variable (regardless the $_G_rc_options value). if $_G_rc_options; then func_options_result=$_G_res_var else func_quote_for_eval ${1+"$@"} func_options_result=$func_quote_for_eval_result fi $_G_rc_options } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= _G_rc_options_prep=false if func_run_hooks func_options_prep ${1+"$@"}; then _G_rc_options_prep=: # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result fi $_G_rc_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= _G_rc_parse_options=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. if func_run_hooks func_parse_options ${1+"$@"}; then eval set dummy "$func_run_hooks_result"; shift _G_rc_parse_options=: fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_rc_parse_options=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_rc_parse_options=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac $_G_match_parse_options && _G_rc_parse_options=: done if $_G_rc_parse_options; then # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result fi $_G_rc_parse_options } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd _G_rc_validate_options=false # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" if func_run_hooks func_validate_options ${1+"$@"}; then # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result _G_rc_validate_options=: fi # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE $_G_rc_validate_options } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-9 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result fi $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result fi $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # 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+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*|-fuse-ld=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: e2fsprogs-1.47.3-rc1/config/mkinstalldirs000077500000000000000000000013221501560632700202610ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here e2fsprogs-1.47.3-rc1/config/parse-types.sh000077500000000000000000000054371501560632700203010ustar00rootroot00000000000000#!/bin/sh cat > sed.script << "EOF" /^#/d /^$/d s/__extension__ // s/typedef \(.*\) __u\([1-9]*\);/#define __U\2_TYPEDEF \1/ s/typedef \(.*\) __s\([1-9]*\);/#define __S\2_TYPEDEF \1/ EOF if test -z "$CC"; then CC=gcc fi if test -z "$CPP"; then CPP="$CC -E" fi /bin/echo -n "checking for __uNN types... " # can't check [ -f /usr/include/asm/types.h ] directly, since # the include path might be different if cross-compiling if echo '#include ' | $CPP - 2> parse-types.log | \ sed -f sed.script | grep '^#' > asm_types.h; then echo "using " else echo "using generic types" fi rm sed.script cp asm_types.h asm_types.c cat >> asm_types.c < #include int main(int argc, char **argv) { #ifdef __U8_TYPEDEF if (sizeof(__U8_TYPEDEF) != 1) { printf("Sizeof(__U8__TYPEDEF) is %d should be 1\n", (int) sizeof(__U8_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __U8_TYPEDEF not defined #endif #ifdef __S8_TYPEDEF if (sizeof(__S8_TYPEDEF) != 1) { printf("Sizeof(_S8__TYPEDEF) is %d should be 1\n", (int) sizeof(__S8_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __S8_TYPEDEF not defined #endif #ifdef __U16_TYPEDEF if (sizeof(__U16_TYPEDEF) != 2) { printf("Sizeof(__U16__TYPEDEF) is %d should be 2\n", (int) sizeof(__U16_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __U16_TYPEDEF not defined #endif #ifdef __S16_TYPEDEF if (sizeof(__S16_TYPEDEF) != 2) { printf("Sizeof(__S16__TYPEDEF) is %d should be 2\n", (int) sizeof(__S16_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __S16_TYPEDEF not defined #endif #ifdef __U32_TYPEDEF if (sizeof(__U32_TYPEDEF) != 4) { printf("Sizeof(__U32__TYPEDEF) is %d should be 4\n", (int) sizeof(__U32_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __U32_TYPEDEF not defined #endif #ifdef __S32_TYPEDEF if (sizeof(__S32_TYPEDEF) != 4) { printf("Sizeof(__S32__TYPEDEF) is %d should be 4\n", (int) sizeof(__S32_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __S32_TYPEDEF not defined #endif #ifdef __U64_TYPEDEF if (sizeof(__U64_TYPEDEF) != 8) { printf("Sizeof(__U64__TYPEDEF) is %d should be 8\n", (int) sizeof(__U64_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __U64_TYPEDEF not defined #endif #ifdef __S64_TYPEDEF if (sizeof(__S64_TYPEDEF) != 8) { printf("Sizeof(__S64__TYPEDEF) is %d should be 8\n", (int) sizeof(__S64_TYPEDEF)); exit(1); } #elif defined(__linux__) #warning __S64_TYPEDEF not defined #endif return 0; } EOF ${BUILD_CC-${CC-gcc}} -o asm_types asm_types.c if ./asm_types then true else if [ "${CROSS_COMPILE}" != "1" ]; then echo "Problem detected with asm_types.h" echo "" > asm_types.h fi fi rm asm_types.c asm_types e2fsprogs-1.47.3-rc1/configure000077500000000000000000017466751501560632700161510ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 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 more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # 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 sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='' PACKAGE_TARNAME='' PACKAGE_VERSION='' PACKAGE_STRING='' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="version.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= gt_needs= ac_func_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS OS_IO_FILE systemd_system_unit_dir have_systemd systemd_LIBS systemd_CFLAGS crond_dir have_crond pkg_udev_rules_dir have_udev udev_LIBS udev_CFLAGS LDFLAGS_SHLIB CFLAGS_STLIB CFLAGS_SHLIB BUILD_LDFLAGS BUILD_CFLAGS INCLUDES DO_TEST_SUITE LDFLAGS_STATIC root_sysconfdir root_libdir root_sbindir root_bindir root_prefix E2SCRUB_CMT UNIX_CMT CYGWIN_CMT LINUX_CMT FUZZING_CMT fuzzer_ldflags fuzzer_cflags have_fuzzer ac_ct_CXX CXXFLAGS CXX threadsan_ldflags threadsan_cflags have_threadsan addrsan_ldflags addrsan_cflags have_addrsan ubsan_ldflags ubsan_cflags have_ubsan lto_ldflags lto_cflags have_lto gcc_ranlib gcc_ar UNI_DIFF_OPTS SEM_INIT_LIB FUSE_CMT FUSE_LIB fuse3_LIBS fuse3_CFLAGS CLOCK_GETTIME_LIB ARCHIVE_LIB MAGIC_LIB SOCKET_LIB SIZEOF_TIME_T SIZEOF_OFF_T SIZEOF_LONG_LONG SIZEOF_LONG SIZEOF_INT SIZEOF_SHORT DD BUILD_CC MAKEINFO STRIP RANLIB AR LDCONFIG PERL AWK CHMOD RM CP MV LN_S mkdir_p LN ifNotGNUmake ifGNUmake BINARY_TYPE POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE_FOR_MSGFMT_OPTION MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS MKDIR_P INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE VERSION PACKAGE GETTEXT_PACKAGE TDB_MAN_COMMENT TDB_CMT UUIDD_CMT PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CXX PTHREAD_CC ax_pthread_config EGREP GREP SED E2INITRD_MAN E2INITRD_PROG FSCK_MAN FSCK_PROG DEFRAG_CMT RESIZER_CMT IMAGER_CMT DEBUGFS_CMT SUBSET_CMT ALL_CMT BLKID_CMT DEPPROFILED_LIBBLKID PROFILED_LIBBLKID DEPSTATIC_LIBBLKID STATIC_LIBBLKID DEPLIBBLKID LIBBLKID UUID_CMT DEPPROFILED_LIBUUID PROFILED_LIBUUID DEPSTATIC_LIBUUID STATIC_LIBUUID DEPLIBUUID LIBUUID PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG DEV_FEATURES_CMT TEST_IO_CMT PRIVATE_LIBS_CMT LDFLAG_DYNAMIC PROFILED_LIB_EXT STATIC_LIB_EXT LIB_EXT PROFILE_CMT BSDLIB_CMT ELF_CMT Q ES E LINK_BUILD_FLAGS SYMLINK_RELATIVE LINK_INSTALL_FLAGS MAINTAINER_CMT CPP RDYNAMIC DLOPEN_LIB host_os host_vendor host_cpu host build_os build_vendor build_cpu build E2FSPROGS_DATE E2FSPROGS_PKGVER E2FSPROGS_PKGREL E2FSPROGS_VERSION E2FSPROGS_DAY E2FSPROGS_MONTH E2FSPROGS_YEAR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='MCONFIG MAKEFILE_ELF MAKEFILE_BSDLIB MAKEFILE_PROFILE MAKEFILE_LIBRARY ASM_TYPES_HEADER PUBLIC_CONFIG_HEADER' ac_user_opts=' enable_option_checking with_diet_libc with_cc with_ccopts with_ldopts with_root_prefix enable_maintainer_mode enable_symlink_install enable_relative_symlinks enable_symlink_relative_symlinks enable_symlink_build enable_verbose_makecmds enable_elf_shlibs enable_bsd_shlibs enable_profile enable_gcov enable_hardening enable_jbd_debug enable_blkid_debug enable_testio_debug enable_developer_features enable_libuuid enable_libblkid enable_subset enable_backtrace enable_debugfs enable_imager enable_resizer enable_defrag enable_fsck enable_e2initrd_helper enable_tls with_pthread enable_uuidd enable_mmp enable_tdb enable_bmap_stats enable_bmap_stats_ops enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_largefile with_libarchive enable_fuse2fs enable_lto enable_ubsan enable_addrsan enable_threadsan enable_fuzzing with_multiarch with_udev_rules_dir with_crond_dir with_systemd_unit_dir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR fuse3_CFLAGS fuse3_LIBS CXX CXXFLAGS CCC udev_CFLAGS udev_LIBS systemd_CFLAGS systemd_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # 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. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= 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 case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -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) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$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 ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$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 ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) 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 ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=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 ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$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'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" 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 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 ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # 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 the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | 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 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # 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 this package 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 \`..'] 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] --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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _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 cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable makefile rules useful for maintainers --enable-symlink-install use symlinks when installing instead of hard links --enable-relative-symlinks use relative symlinks when installing --enable-symlink-build use symlinks while building instead of hard links --enable-verbose-makecmds enable verbose make command output --enable-elf-shlibs select ELF shared libraries --enable-bsd-shlibs select BSD shared libraries --enable-profile build profiling libraries --enable-gcov build for coverage testing using gcov --enable-hardening build with hardening flags such as fortify --enable-jbd-debug enable journal debugging --enable-blkid-debug enable blkid debugging --disable-testio-debug disable the use of the test I/O manager for debugging --enable-developer-features enable features for use by ext4 developers --enable-libuuid build and use private uuid library --enable-libblkid build and use private blkid library --enable-subset enable subset-only build --disable-backtrace disable use backtrace --disable-debugfs disable support of debugfs program --disable-imager disable support of e2image program --disable-resizer disable support of e2resize program --disable-defrag disable support of e4defrag program --enable-fsck build fsck wrapper program --enable-e2initrd-helper build e2initrd-helper program --disable-tls disable use of thread local support --disable-uuidd disable building the uuid daemon --disable-mmp disable support mmp, Multi Mount Protection --disable-tdb disable tdb support --disable-bmap-stats disable collection of bitmap stats --enable-bmap-stats-ops enable collection of additional bitmap stats --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-largefile omit support for large files --disable-fuse2fs do not build fuse2fs --enable-lto enable link time optimization --enable-ubsan enable undefined behavior sanitizer --enable-addrsan enable address sanitizer --enable-threadsan enable thread sanitizer --enable-fuzzing enable fuzzing sanitizer Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-diet-libc use diet libc --with-cc no longer supported, use CC= instead --with-ccopts no longer supported, use CFLAGS= instead --with-ldopts no longer supported, use LDFLAGS= instead --with-root-prefix=PREFIX override prefix variable for files to be placed in the root --without-pthread disable use of pthread support --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --without-libarchive disable use of libarchive --with-multiarch=ARCH specify the multiarch triplet --with-udev-rules-dir[=DIR] Install udev rules into DIR. --with-crond-dir[=DIR] Install system crontabs into DIR. --with-systemd-unit-dir[=DIR] Install systemd system units into DIR. 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 LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CXX C++ compiler command CXXFLAGS C++ compiler flags udev_CFLAGS C compiler flags for udev, overriding pkg-config udev_LIBS linker flags for udev, overriding pkg-config systemd_CFLAGS C compiler flags for systemd, overriding pkg-config systemd_LIBS linker flags for systemd, overriding pkg-config 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 the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. 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 else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.71 Copyright (C) 2021 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 fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* 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_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR # ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid; break else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=$ac_mid; break else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done else $as_nop ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval (void) { return $2; } static unsigned long int ulongval (void) { return $2; } #include #include int main (void) { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : echo >>conftest.val; read $3 &5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { 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` /usr/bin/hostinfo = `(/usr/bin/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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&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_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=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append 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 as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset 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: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } 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. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*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 do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" gt_needs="$gt_needs " as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF" # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="config.rpath install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/config" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; 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,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$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 # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$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. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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_config_headers="$ac_config_headers lib/config.h" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi 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_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } if test ${ac_cv_safe_to_define___extensions__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_safe_to_define___extensions__=yes else $as_nop ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } if test ${ac_cv_should_define__xopen_source+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_should_define__xopen_source=no if test $ac_cv_header_wchar_h = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 #include mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_should_define__xopen_source=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h if test $ac_cv_header_minix_config_h = yes then : MINIX=yes printf "%s\n" "#define _MINIX 1" >>confdefs.h printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h else $as_nop MINIX= fi if test $ac_cv_safe_to_define___extensions__ = yes then : printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h fi if test $ac_cv_should_define__xopen_source = yes then : printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h fi MCONFIG=./MCONFIG BINARY_TYPE=bin E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h` E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h` E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }') MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'` YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'` if expr $YEAR ">" 1900 > /dev/null ; then E2FSPROGS_YEAR=$YEAR elif expr $YEAR ">" 90 >/dev/null ; then E2FSPROGS_YEAR=19$YEAR else E2FSPROGS_YEAR=20$YEAR fi case $MONTH in Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;; Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;; Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;; Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;; May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;; Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;; Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;; Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;; Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;; Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;; Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;; Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown month $MONTH??" >&5 printf "%s\n" "$as_me: WARNING: Unknown month $MONTH??" >&2;} ;; esac base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'` base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'` date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY} case $E2FSPROGS_VERSION in *-WIP|pre-*) E2FSPROGS_PKGVER="$base_ver" E2FSPROGS_PKGREL="WIP.$date_spec" ;; *) E2FSPROGS_PKGVER="$base_ver" E2FSPROGS_PKGREL="$base_rel" ;; esac unset DATE MONTH YEAR base_ver pre_vers date_spec { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION" >&5 printf "%s\n" "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}" >&5 printf "%s\n" "Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&5 printf "%s\n" "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&6; } WITH_DIET_LIBC= # Check whether --with-diet-libc was given. if test ${with_diet_libc+y} then : withval=$with_diet_libc; CC="diet cc -nostdinc" WITH_DIET_LIBC=yes if test -z "$LIBS" then LIBS="-lcompat" else LIBS="$LIBS -lcompat" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: CC=$CC" >&5 printf "%s\n" "CC=$CC" >&6; } fi # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac DLOPEN_LIB='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : DLOPEN_LIB=-ldl fi # Check whether --with-cc was given. if test ${with_cc+y} then : withval=$with_cc; as_fn_error $? "--with-cc no longer supported; use CC= instead" "$LINENO" 5 fi # Check whether --with-ccopts was given. if test ${with_ccopts+y} then : withval=$with_ccopts; as_fn_error $? "--with-ccopts no longer supported; use CFLAGS= instead" "$LINENO" 5 fi # Check whether --with-ldopts was given. if test ${with_ldopts+y} then : withval=$with_ldopts; as_fn_error $? "--with-ldopts no longer supported; use LDFLAGS= instead" "$LINENO" 5 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 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_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" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; 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 ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi 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 if test "$GCC" = yes; then RDYNAMIC="-rdynamic" 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&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+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" 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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$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. # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for additional special compiler flags" >&5 printf %s "checking for additional special compiler flags... " >&6; } if test "$GCC" = yes then case "$host_cpu" in alpha) addcflags="-mieee" ;; esac fi if test "x$addcflags" != x then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $addcflags" >&5 printf "%s\n" "$addcflags" >&6; } CFLAGS="$addcflags $CFLAGS" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 printf "%s\n" "(none)" >&6; } fi LIB_EXT=.a STATIC_LIB_EXT=.a PROFILED_LIB_EXT=.a # Check whether --with-root-prefix was given. if test ${with_root_prefix+y} then : withval=$with_root_prefix; root_prefix=$withval else $as_nop root_prefix=NONE fi # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; if test "$enableval" = "no" then MAINTAINER_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling maintainer mode" >&5 printf "%s\n" "Disabling maintainer mode" >&6; } else MAINTAINER_CMT= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling maintainer mode" >&5 printf "%s\n" "Enabling maintainer mode" >&6; } fi else $as_nop MAINTAINER_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling maintainer mode by default" >&5 printf "%s\n" "Disabling maintainer mode by default" >&6; } fi # Check whether --enable-symlink-install was given. if test ${enable_symlink_install+y} then : enableval=$enable_symlink_install; if test "$enableval" = "no" then LINK_INSTALL_FLAGS=-f { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling symlinks for install" >&5 printf "%s\n" "Disabling symlinks for install" >&6; } else LINK_INSTALL_FLAGS=-sf { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling symlinks for install" >&5 printf "%s\n" "Enabling symlinks for install" >&6; } fi else $as_nop LINK_INSTALL_FLAGS=-f { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling symlinks for install by default" >&5 printf "%s\n" "Disabling symlinks for install by default" >&6; } fi relative_symlink_defined= # Check whether --enable-relative-symlinks was given. if test ${enable_relative_symlinks+y} then : enableval=$enable_relative_symlinks; if test "$enableval" = "no" then SYMLINK_RELATIVE= relative_symlink_defined=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling relative symlinks for install" >&5 printf "%s\n" "Disabling relative symlinks for install" >&6; } else SYMLINK_RELATIVE=--relative relative_symlink_defined=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling relative symlinks for install" >&5 printf "%s\n" "Enabling relative symlinks for install" >&6; } fi fi # Check whether --enable-symlink-relative-symlinks was given. if test ${enable_symlink_relative_symlinks+y} then : enableval=$enable_symlink_relative_symlinks; if test "$enableval" = "no" then SYMLINK_RELATIVE=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling relative symlinks for install" >&5 printf "%s\n" "Disabling relative symlinks for install" >&6; } else SYMLINK_RELATIVE=--relative { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling relative symlinks for install" >&5 printf "%s\n" "Enabling relative symlinks for install" >&6; } fi else $as_nop if test -z "$relative_symlink_defined" then SYMLINK_RELATIVE= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling relative symlinks for install by default" >&5 printf "%s\n" "Disabling relative symlinks for install by default" >&6; } fi fi # Check whether --enable-symlink-build was given. if test ${enable_symlink_build+y} then : enableval=$enable_symlink_build; if test "$enableval" = "no" then LINK_BUILD_FLAGS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling symlinks for build" >&5 printf "%s\n" "Disabling symlinks for build" >&6; } else LINK_BUILD_FLAGS=-s { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling symlinks for build" >&5 printf "%s\n" "Enabling symlinks for build" >&6; } fi else $as_nop LINK_BUILD_FLAGS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling symlinks for build by default" >&5 printf "%s\n" "Disabling symlinks for build by default" >&6; } fi # Check whether --enable-verbose-makecmds was given. if test ${enable_verbose_makecmds+y} then : enableval=$enable_verbose_makecmds; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling verbose make commands" >&5 printf "%s\n" "Disabling verbose make commands" >&6; } E=@echo ES=echo Q=@ else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling verbose make commands" >&5 printf "%s\n" "Enabling verbose make commands" >&6; } E=@\\# ES=\\# Q= fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling verbose make commands" >&5 printf "%s\n" "Disabling verbose make commands" >&6; } E=@echo ES=echo Q=@ fi E2_PKG_CONFIG_STATIC=--static LDFLAG_DYNAMIC= PRIVATE_LIBS_CMT= # Check whether --enable-elf-shlibs was given. if test ${enable_elf_shlibs+y} then : enableval=$enable_elf_shlibs; if test "$enableval" = "no" then ELF_CMT=# MAKEFILE_ELF=/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling ELF shared libraries" >&5 printf "%s\n" "Disabling ELF shared libraries" >&6; } else E2_PKG_CONFIG_STATIC= ELF_CMT= MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib case "$host_os" in solaris2.*) MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib ;; esac BINARY_TYPE=elfbin LIB_EXT=.so PRIVATE_LIBS_CMT=# LDFLAG_DYNAMIC='-Wl,-rpath-link,$(top_builddir)/lib' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling ELF shared libraries" >&5 printf "%s\n" "Enabling ELF shared libraries" >&6; } fi else $as_nop MAKEFILE_ELF=/dev/null ELF_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling ELF shared libraries by default" >&5 printf "%s\n" "Disabling ELF shared libraries by default" >&6; } fi # Check whether --enable-bsd-shlibs was given. if test ${enable_bsd_shlibs+y} then : enableval=$enable_bsd_shlibs; if test "$enableval" = "no" then BSDLIB_CMT=# MAKEFILE_BSDLIB=/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling BSD shared libraries" >&5 printf "%s\n" "Disabling BSD shared libraries" >&6; } else E2_PKG_CONFIG_STATIC= BSDLIB_CMT= MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib LIB_EXT=.so case "$host_os" in darwin*) MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib LIB_EXT=.dylib ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling BSD shared libraries" >&5 printf "%s\n" "Enabling BSD shared libraries" >&6; } fi else $as_nop MAKEFILE_BSDLIB=/dev/null BSDLIB_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling BSD shared libraries by default" >&5 printf "%s\n" "Disabling BSD shared libraries by default" >&6; } fi # Check whether --enable-profile was given. if test ${enable_profile+y} then : enableval=$enable_profile; if test "$enableval" = "no" then PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling profiling libraries" >&5 printf "%s\n" "Disabling profiling libraries" >&6; } else PROFILE_CMT= MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile PROFILED_LIB_EXT=_p.a { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building profiling libraries" >&5 printf "%s\n" "Building profiling libraries" >&6; } fi else $as_nop PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling profiling libraries by default" >&5 printf "%s\n" "Disabling profiling libraries by default" >&6; } fi # Check whether --enable-gcov was given. if test ${enable_gcov+y} then : enableval=$enable_gcov; if test "$enableval" = "yes" then CFLAGS="-g -fprofile-arcs -ftest-coverage" LDFLAGS="-fprofile-arcs -ftest-coverage" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling gcov support" >&5 printf "%s\n" "Enabling gcov support" >&6; } fi fi CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}" CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}" LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS} # Check whether --enable-hardening was given. if test ${enable_hardening+y} then : enableval=$enable_hardening; if test "$enableval" = "yes" then HARDEN_CFLAGS="-D_FORTIFY_SOURCE=3 -fstack-protector-strong" HARDEN_LDFLAGS="-Wl,-z,relro -Wl,-z,now" CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE" CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS" CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE" LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie" LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS" LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling hardening support" >&5 printf "%s\n" "Enabling hardening support" >&6; } fi fi # Check whether --enable-jbd-debug was given. if test ${enable_jbd_debug+y} then : enableval=$enable_jbd_debug; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling journal debugging" >&5 printf "%s\n" "Disabling journal debugging" >&6; } else printf "%s\n" "#define CONFIG_JBD_DEBUG 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling journal debugging" >&5 printf "%s\n" "Enabling journal debugging" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling journal debugging by default" >&5 printf "%s\n" "Disabling journal debugging by default" >&6; } fi # Check whether --enable-blkid-debug was given. if test ${enable_blkid_debug+y} then : enableval=$enable_blkid_debug; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling blkid debugging" >&5 printf "%s\n" "Disabling blkid debugging" >&6; } else printf "%s\n" "#define CONFIG_BLKID_DEBUG 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling blkid debugging" >&5 printf "%s\n" "Enabling blkid debugging" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling blkid debugging by default" >&5 printf "%s\n" "Disabling blkid debugging by default" >&6; } fi # Check whether --enable-testio-debug was given. if test ${enable_testio_debug+y} then : enableval=$enable_testio_debug; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling testio debugging" >&5 printf "%s\n" "Disabling testio debugging" >&6; } TEST_IO_CMT="#" else TEST_IO_CMT= printf "%s\n" "#define CONFIG_TESTIO_DEBUG 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling testio debugging" >&5 printf "%s\n" "Enabling testio debugging" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling testio debugging by default" >&5 printf "%s\n" "Enabling testio debugging by default" >&6; } printf "%s\n" "#define CONFIG_TESTIO_DEBUG 1" >>confdefs.h TEST_IO_CMT= fi # Check whether --enable-developer-features was given. if test ${enable_developer_features+y} then : enableval=$enable_developer_features; if test "$enableval" = "yes" then DEV_FEATURES_CMT= printf "%s\n" "#define CONFIG_DEVELOPER_FEATURES 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling ext4 developer features" >&5 printf "%s\n" "Enabling ext4 developer features" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling ext4 developer features" >&5 printf "%s\n" "Disabling ext4 developer features" >&6; } DEV_FEATURES_CMT="#" fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling ext4 developer features by default" >&5 printf "%s\n" "Disabling ext4 developer features by default" >&6; } DEV_FEATURES_CMT= fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi LIBUUID= DEPLIBUUID= STATIC_LIBUUID= DEPSTATIC_LIBUUID= PROFILED_LIBUUID= DEPPROFILED_LIBUUID= UUID_CMT= # Check whether --enable-libuuid was given. if test ${enable_libuuid+y} then : enableval=$enable_libuuid; if test "$enableval" = "no" then if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not installed; please install it." "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate in -luuid" >&5 printf %s "checking for uuid_generate in -luuid... " >&6; } if test ${ac_cv_lib_uuid_uuid_generate+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-luuid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char uuid_generate (); int main (void) { return uuid_generate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_uuid_uuid_generate=yes else $as_nop ac_cv_lib_uuid_uuid_generate=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate" >&5 printf "%s\n" "$ac_cv_lib_uuid_uuid_generate" >&6; } if test "x$ac_cv_lib_uuid_uuid_generate" = xyes then : LIBUUID=`$PKG_CONFIG --libs uuid`; STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid` else $as_nop as_fn_error $? "external uuid library not found" "$LINENO" 5 fi PROFILED_LIBUUID=$LIBUUID UUID_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling private uuid library" >&5 printf "%s\n" "Disabling private uuid library" >&6; } else LIBUUID='$(LIB)/libuuid'$LIB_EXT DEPLIBUUID=$LIBUUID STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT DEPSTATIC_LIBUUID=$STATIC_LIBUUID PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT DEPPROFILED_LIBUUID=$PROFILED_LIBUUID { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling private uuid library" >&5 printf "%s\n" "Enabling private uuid library" >&6; } fi else $as_nop if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uuid_generate in -luuid" >&5 printf %s "checking for uuid_generate in -luuid... " >&6; } if test ${ac_cv_lib_uuid_uuid_generate+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-luuid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char uuid_generate (); int main (void) { return uuid_generate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_uuid_uuid_generate=yes else $as_nop ac_cv_lib_uuid_uuid_generate=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uuid_uuid_generate" >&5 printf "%s\n" "$ac_cv_lib_uuid_uuid_generate" >&6; } if test "x$ac_cv_lib_uuid_uuid_generate" = xyes then : LIBUUID=`$PKG_CONFIG --libs uuid`; STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid` fi fi if test -n "$LIBUUID"; then PROFILED_LIBUUID=$LIBUUID UUID_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using system uuid by default" >&5 printf "%s\n" "Using system uuid by default" >&6; } else LIBUUID='$(LIB)/libuuid'$LIB_EXT DEPLIBUUID=$LIBUUID STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT DEPSTATIC_LIBUUID=$STATIC_LIBUUID PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT DEPPROFILED_LIBUUID=$PROFILED_LIBUUID { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling private uuid library by default" >&5 printf "%s\n" "Enabling private uuid library by default" >&6; } fi fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi LIBBLKID= DEPLIBBLKID= STATIC_LIBBLKID= DEPSTATIC_LIBBLKID= PROFILED_LIBBLKID= DEPPROFILED_LIBBLKID= BLKID_CMT= # Check whether --enable-libblkid was given. if test ${enable_libblkid+y} then : enableval=$enable_libblkid; if test "$enableval" = "no" then if test -z "$PKG_CONFIG"; then as_fn_error $? "pkg-config not installed; please install it." "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blkid_get_cache in -lblkid" >&5 printf %s "checking for blkid_get_cache in -lblkid... " >&6; } if test ${ac_cv_lib_blkid_blkid_get_cache+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lblkid -luuid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char blkid_get_cache (); int main (void) { return blkid_get_cache (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_blkid_blkid_get_cache=yes else $as_nop ac_cv_lib_blkid_blkid_get_cache=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_get_cache" >&5 printf "%s\n" "$ac_cv_lib_blkid_blkid_get_cache" >&6; } if test "x$ac_cv_lib_blkid_blkid_get_cache" = xyes then : LIBBLKID=`$PKG_CONFIG --libs blkid`; STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid` else $as_nop as_fn_error $? "external blkid library not found" "$LINENO" 5 fi BLKID_CMT=# PROFILED_LIBBLKID=$LIBBLKID { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling private blkid library" >&5 printf "%s\n" "Disabling private blkid library" >&6; } else LIBBLKID='$(LIB)/libblkid'$LIB_EXT DEPLIBBLKID=$LIBBLKID STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID printf "%s\n" "#define CONFIG_BUILD_FINDFS 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling private blkid library" >&5 printf "%s\n" "Enabling private blkid library" >&6; } fi else $as_nop if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blkid_get_cache in -lblkid" >&5 printf %s "checking for blkid_get_cache in -lblkid... " >&6; } if test ${ac_cv_lib_blkid_blkid_get_cache+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lblkid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char blkid_get_cache (); int main (void) { return blkid_get_cache (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_blkid_blkid_get_cache=yes else $as_nop ac_cv_lib_blkid_blkid_get_cache=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_get_cache" >&5 printf "%s\n" "$ac_cv_lib_blkid_blkid_get_cache" >&6; } if test "x$ac_cv_lib_blkid_blkid_get_cache" = xyes then : LIBBLKID=`$PKG_CONFIG --libs blkid`; STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid` fi fi if test -n "$LIBBLKID"; then BLKID_CMT=# PROFILED_LIBBLKID=$LIBBLKID { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using system blkid library by default" >&5 printf "%s\n" "Using system blkid library by default" >&6; } else LIBBLKID='$(LIB)/libblkid'$LIB_EXT DEPLIBBLKID=$LIBBLKID STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID printf "%s\n" "#define CONFIG_BUILD_FINDFS 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling private blkid library by default" >&5 printf "%s\n" "Enabling private blkid library by default" >&6; } fi fi ALL_CMT= SUBSET_CMT= # Check whether --enable-subset was given. if test ${enable_subset+y} then : enableval=$enable_subset; if test "$enableval" = "no" then SUBSET_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling subset-only build" >&5 printf "%s\n" "Disabling subset-only build" >&6; } else ALL_CMT=# { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling subset-only-build" >&5 printf "%s\n" "Enabling subset-only-build" >&6; } fi fi # Check whether --enable-backtrace was given. if test ${enable_backtrace+y} then : enableval=$enable_backtrace; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling use of backtrace" >&5 printf "%s\n" "Disabling use of backtrace" >&6; } printf "%s\n" "#define DISABLE_BACKTRACE 1" >>confdefs.h else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling use of backtrace" >&5 printf "%s\n" "Enabling use of backtrace" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling use of backtrace by default" >&5 printf "%s\n" "Enabling use of backtrace by default" >&6; } fi # Check whether --enable-debugfs was given. if test ${enable_debugfs+y} then : enableval=$enable_debugfs; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling debugfs support" >&5 printf "%s\n" "Disabling debugfs support" >&6; } DEBUGFS_CMT="#" else DEBUGFS_CMT= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling debugfs support" >&5 printf "%s\n" "Enabling debugfs support" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling debugfs support by default" >&5 printf "%s\n" "Enabling debugfs support by default" >&6; } DEBUGFS_CMT= fi # Check whether --enable-imager was given. if test ${enable_imager+y} then : enableval=$enable_imager; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling e2image support" >&5 printf "%s\n" "Disabling e2image support" >&6; } IMAGER_CMT="#" else IMAGER_CMT= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e2image support" >&5 printf "%s\n" "Enabling e2image support" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e2image support by default" >&5 printf "%s\n" "Enabling e2image support by default" >&6; } IMAGER_CMT= fi # Check whether --enable-resizer was given. if test ${enable_resizer+y} then : enableval=$enable_resizer; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling e2resize support" >&5 printf "%s\n" "Disabling e2resize support" >&6; } RESIZER_CMT="#" else RESIZER_CMT= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e2resize support" >&5 printf "%s\n" "Enabling e2resize support" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e2resize support by default" >&5 printf "%s\n" "Enabling e2resize support by default" >&6; } RESIZER_CMT= fi # Check whether --enable-defrag was given. if test ${enable_defrag+y} then : enableval=$enable_defrag; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling e4defrag support" >&5 printf "%s\n" "Disabling e4defrag support" >&6; } DEFRAG_CMT="#" else DEFRAG_CMT= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e4defrag support" >&5 printf "%s\n" "Enabling e4defrag support" >&6; } fi else $as_nop if test -z "$WITH_DIET_LIBC" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling e4defrag support by default" >&5 printf "%s\n" "Enabling e4defrag support by default" >&6; } DEFRAG_CMT= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling e4defrag support by default" >&5 printf "%s\n" "Disabling e4defrag support by default" >&6; } DEFRAG_CMT="#" fi fi # Check whether --enable-fsck was given. if test ${enable_fsck+y} then : enableval=$enable_fsck; if test "$enableval" = "no" then FSCK_PROG='' FSCK_MAN='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not building fsck wrapper" >&5 printf "%s\n" "Not building fsck wrapper" >&6; } else FSCK_PROG=fsck FSCK_MAN=fsck.8 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building fsck wrapper" >&5 printf "%s\n" "Building fsck wrapper" >&6; } fi else $as_nop case "$host_os" in gnu*) FSCK_PROG='' FSCK_MAN='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not building fsck wrapper by default" >&5 printf "%s\n" "Not building fsck wrapper by default" >&6; } ;; *) FSCK_PROG=fsck FSCK_MAN=fsck.8 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building fsck wrapper by default" >&5 printf "%s\n" "Building fsck wrapper by default" >&6; } esac fi # Check whether --enable-e2initrd-helper was given. if test ${enable_e2initrd_helper+y} then : enableval=$enable_e2initrd_helper; if test "$enableval" = "no" then E2INITRD_PROG='' E2INITRD_MAN='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not building e2initrd helper" >&5 printf "%s\n" "Not building e2initrd helper" >&6; } else E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building e2initrd helper" >&5 printf "%s\n" "Building e2initrd helper" >&6; } fi else $as_nop E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building e2initrd helper by default" >&5 printf "%s\n" "Building e2initrd helper by default" >&6; } fi # Check whether --enable-tls was given. if test ${enable_tls+y} then : enableval=$enable_tls; if test "$enableval" = "no" then try_tls="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling thread local support" >&5 printf "%s\n" "Disabling thread local support" >&6; } else try_tls="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling thread local support" >&5 printf "%s\n" "Enabling thread local support" >&6; } fi else $as_nop if test -n "$WITH_DIET_LIBC" then try_tls="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Diet libc does not support thread local support" >&5 printf "%s\n" "Diet libc does not support thread local support" >&6; } else try_tls="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Try using thread local support by default" >&5 printf "%s\n" "Try using thread local support by default" >&6; } fi fi if test "$try_tls" = "yes" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for thread local storage (TLS) class" >&5 printf %s "checking for thread local storage (TLS) class... " >&6; } if test ${ac_cv_tls+y} then : printf %s "(cached) " >&6 else $as_nop ax_tls_keywords="__thread __declspec(thread) none" for ax_tls_keyword in $ax_tls_keywords; do case $ax_tls_keyword in none) ac_cv_tls=none ; break ;; *) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void foo(void) { static $ax_tls_keyword int bar; exit(1); } int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_tls=$ax_tls_keyword ; break else $as_nop ac_cv_tls=none fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext esac done fi if test "$ac_cv_tls" != "none"; then printf "%s\n" "#define TLS $ac_cv_tls" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5 printf "%s\n" "$ac_cv_tls" >&6; } fi # Check whether --with-pthread was given. if test ${with_pthread+y} then : withval=$with_pthread; if test "$withval" = "no" then try_pthread="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling pthread support" >&5 printf "%s\n" "Disabling pthread support" >&6; } else try_pthread="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Testing for pthread support" >&5 printf "%s\n" "Testing for pthread support" >&6; } fi else $as_nop try_pthread="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Try testing for pthread support by default" >&5 printf "%s\n" "Try testing for pthread support by default" >&6; } fi if test "$try_pthread" = "yes" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" 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 ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on Tru64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ax_pthread_save_CC="$CC" ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" if test "x$PTHREAD_CC" != "x" then : CC="$PTHREAD_CC" fi if test "x$PTHREAD_CXX" != "x" then : CXX="$PTHREAD_CXX" fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_join (); int main (void) { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 printf "%s\n" "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi CC="$ax_pthread_save_CC" CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items with a "," contain both # C compiler flags (before ",") and linker flags (after ","). Other items # starting with a "-" are C compiler flags, and remaining items are # library names, except for "none" which indicates that we try without # any flags at all, and "pthread-config" which is a program returning # the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 # (Note: HP C rejects this with "bad form for `-t' option") # -pthreads: Solaris/gcc (Note: HP C also rejects) # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads and # -D_REENTRANT too), HP C (must be checked before -lpthread, which # is present but should not be used directly; and before -mthreads, # because the compiler interprets this as "-mt" + "-hreads") # -mthreads: Mingw32/gcc, Lynx/gcc # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case $host_os in freebsd*) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) ax_pthread_flags="-kthread lthread $ax_pthread_flags" ;; hpux*) # From the cc(1) man page: "[-mt] Sets various -D flags to enable # multi-threading and also sets -lpthread." ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" ;; openedition*) # IBM z/OS requires a feature-test macro to be defined in order to # enable POSIX threads at all, so give the user a hint if this is # not set. (We don't define these ourselves, as they can affect # other portions of the system API in unpredictable ways.) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) AX_PTHREAD_ZOS_MISSING # endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} fi rm -rf conftest* ;; solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (N.B.: The stubs are missing # pthread_cleanup_push, or rather a function called by this macro, # so we could check for that, but who knows whether they'll stub # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac # Are we compiling with Clang? { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 printf %s "checking whether $CC is Clang... " >&6; } if test ${ax_cv_PTHREAD_CLANG+y} then : printf %s "(cached) " >&6 else $as_nop ax_cv_PTHREAD_CLANG=no # Note that Autoconf sets GCC=yes for Clang as well as GCC if test "x$GCC" = "xyes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Note: Clang 2.7 lacks __clang_[a-z]+__ */ # if defined(__clang__) && defined(__llvm__) AX_PTHREAD_CC_IS_CLANG # endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 then : ax_cv_PTHREAD_CLANG=yes fi rm -rf conftest* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } ax_pthread_clang="$ax_cv_PTHREAD_CLANG" # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) # Note that for GCC and Clang -pthread generally implies -lpthread, # except when -nostdlib is passed. # This is problematic using libtool to build C++ shared libraries with pthread: # [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 # [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 # [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 # To solve this, first try -pthread together with -lpthread for GCC if test "x$GCC" = "xyes" then : ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" fi # Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first if test "x$ax_pthread_clang" = "xyes" then : ax_pthread_flags="-pthread,-lpthread -pthread" fi # The presence of a feature test macro requesting re-entrant function # definitions is, on some systems, a strong hint that pthreads support is # correctly enabled case $host_os in darwin* | hpux* | linux* | osf* | solaris*) ax_pthread_check_macro="_REENTRANT" ;; aix*) ax_pthread_check_macro="_THREAD_SAFE" ;; *) ax_pthread_check_macro="--" ;; esac if test "x$ax_pthread_check_macro" = "x--" then : ax_pthread_check_cond=0 else $as_nop ax_pthread_check_cond="!defined($ax_pthread_check_macro)" fi if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do case $ax_pthread_try_flag in none) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 printf %s "checking whether pthreads work without any flags... " >&6; } ;; *,*) PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } ;; -*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ax_pthread_config+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 printf "%s\n" "$ax_pthread_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ax_pthread_config" = "xno" then : continue fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include # if $ax_pthread_check_cond # error "$ax_pthread_check_macro must be defined" # endif static void *some_global = NULL; static void routine(void *a) { /* To avoid any unused-parameter or unused-but-set-parameter warning. */ some_global = a; } static void *start_routine(void *a) { return a; } int main (void) { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 printf "%s\n" "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = "xyes" then : break fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Clang needs special handling, because older versions handle the -pthread # option in a rather... idiosyncratic way if test "x$ax_pthread_clang" = "xyes"; then # Clang takes -pthread; it has never supported any other flag # (Note 1: This will need to be revisited if a system that Clang # supports has POSIX threads in a separate library. This tends not # to be the way of modern systems, but it's conceivable.) # (Note 2: On some systems, notably Darwin, -pthread is not needed # to get POSIX threads support; the API is always present and # active. We could reasonably leave PTHREAD_CFLAGS empty. But # -pthread does define _REENTRANT, and while the Darwin headers # ignore this macro, third-party headers might not.) # However, older versions of Clang make a point of warning the user # that, in an invocation where only linking and no compilation is # taking place, the -pthread option has no effect ("argument unused # during compilation"). They expect -pthread to be passed in only # when source code is being compiled. # # Problem is, this is at odds with the way Automake and most other # C build frameworks function, which is that the same flags used in # compilation (CFLAGS) are also used in linking. Many systems # supported by AX_PTHREAD require exactly this for POSIX threads # support, and in fact it is often not straightforward to specify a # flag that is used only in the compilation phase and not in # linking. Such a scenario is extremely rare in practice. # # Even though use of the -pthread flag in linking would only print # a warning, this can be a nuisance for well-run software projects # that build with -Werror. So if the active version of Clang has # this misfeature, we search for an option to squash it. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} then : printf %s "(cached) " >&6 else $as_nop ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown # Create an alternate version of $ac_link that compiles and # links in two steps (.c -> .o, .o -> exe) instead of one # (.c -> exe), because the warning occurs only in the second # step ax_pthread_save_ac_link="$ac_link" ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" ax_pthread_save_CFLAGS="$CFLAGS" for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do if test "x$ax_pthread_try" = "xunknown" then : break fi CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" ac_link="$ax_pthread_save_ac_link" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_link="$ax_pthread_2step_ac_link" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF if ac_fn_c_try_link "$LINENO" then : break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done ac_link="$ax_pthread_save_ac_link" CFLAGS="$ax_pthread_save_CFLAGS" if test "x$ax_pthread_try" = "x" then : ax_pthread_try=no fi ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in no | unknown) ;; *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; esac fi # $ax_pthread_clang = yes # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 printf %s "checking for joinable pthread attribute... " >&6; } if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} then : printf %s "(cached) " >&6 else $as_nop ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int attr = $ax_pthread_attr; return attr /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ test "x$ax_pthread_joinable_attr_defined" != "xyes" then : printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h ax_pthread_joinable_attr_defined=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 printf %s "checking whether more special flags are required for pthreads... " >&6; } if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} then : printf %s "(cached) " >&6 else $as_nop ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ test "x$ax_pthread_special_flags_added" != "xyes" then : PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ax_pthread_special_flags_added=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int i = PTHREAD_PRIO_INHERIT; return i; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_PRIO_INHERIT=yes else $as_nop ax_cv_PTHREAD_PRIO_INHERIT=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ test "x$ax_pthread_prio_inherit_defined" != "xyes" then : printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h ax_pthread_prio_inherit_defined=yes fi CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" # More AIX lossage: compile with *_r variant if test "x$GCC" != "xyes"; then case $host_os in aix*) case "x/$CC" in #( x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : #handle absolute path differently from PATH based program lookup case "x$CC" in #( x/*) : if as_fn_executable_p ${CC}_r then : PTHREAD_CC="${CC}_r" fi if test "x${CXX}" != "x" then : if as_fn_executable_p ${CXX}_r then : PTHREAD_CXX="${CXX}_r" fi fi ;; #( *) : for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 printf "%s\n" "$PTHREAD_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" if test "x${CXX}" != "x" then : for ac_prog in ${CXX}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$PTHREAD_CXX"; then ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX if test -n "$PTHREAD_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 printf "%s\n" "$PTHREAD_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CXX" && break done test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" fi ;; esac ;; #( *) : ;; esac ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "x$ax_pthread_ok" = "xyes"; then printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h : else ax_pthread_ok=no 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 else test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" fi # Check whether --enable-uuidd was given. if test ${enable_uuidd+y} then : enableval=$enable_uuidd; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Not building uuidd" >&5 printf "%s\n" "Not building uuidd" >&6; } UUIDD_CMT="#" else printf "%s\n" "#define USE_UUIDD 1" >>confdefs.h UUIDD_CMT="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building uuidd" >&5 printf "%s\n" "Building uuidd" >&6; } fi else $as_nop printf "%s\n" "#define USE_UUIDD 1" >>confdefs.h if test -z "$UUID_CMT" then UUIDD_CMT="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Building uuidd by default" >&5 printf "%s\n" "Building uuidd by default" >&6; } else UUIDD_CMT="#" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling uuidd by default" >&5 printf "%s\n" "Disabling uuidd by default" >&6; } fi fi # Check whether --enable-mmp was given. if test ${enable_mmp+y} then : enableval=$enable_mmp; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling mmp support" >&5 printf "%s\n" "Disabling mmp support" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling mmp support" >&5 printf "%s\n" "Enabling mmp support" >&6; } printf "%s\n" "#define CONFIG_MMP 1" >>confdefs.h fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling mmp support by default" >&5 printf "%s\n" "Enabling mmp support by default" >&6; } printf "%s\n" "#define CONFIG_MMP 1" >>confdefs.h fi # Check whether --enable-tdb was given. if test ${enable_tdb+y} then : enableval=$enable_tdb; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling tdb support" >&5 printf "%s\n" "Disabling tdb support" >&6; } CONFIG_TDB=0 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling tdb support" >&5 printf "%s\n" "Enabling tdb support" >&6; } CONFIG_TDB=1 fi else $as_nop case "$host_os" in mingw*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling tdb support by default" >&5 printf "%s\n" "Disabling tdb support by default" >&6; } CONFIG_TDB=0 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling tdb support by default" >&5 printf "%s\n" "Enabling tdb support by default" >&6; } CONFIG_TDB=1 ;; esac fi if test "$CONFIG_TDB" = "1" then printf "%s\n" "#define CONFIG_TDB 1" >>confdefs.h TDB_CMT="" TDB_MAN_COMMENT="" else TDB_CMT="#" TDB_MAN_COMMENT='.\"' fi # Check whether --enable-bmap-stats was given. if test ${enable_bmap_stats+y} then : enableval=$enable_bmap_stats; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling bitmap statistics support" >&5 printf "%s\n" "Disabling bitmap statistics support" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling bitmap statistics support" >&5 printf "%s\n" "Enabling bitmap statistics support" >&6; } printf "%s\n" "#define ENABLE_BMAP_STATS 1" >>confdefs.h fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling bitmap statistics support by default" >&5 printf "%s\n" "Enabling bitmap statistics support by default" >&6; } printf "%s\n" "#define ENABLE_BMAP_STATS 1" >>confdefs.h fi # Check whether --enable-bmap-stats-ops was given. if test ${enable_bmap_stats_ops+y} then : enableval=$enable_bmap_stats_ops; if test "$enableval" = "no" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling additional bitmap statistics" >&5 printf "%s\n" "Disabling additional bitmap statistics" >&6; } else if test "x${enable_bmap_stats}" = "xno" then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Error --enable-bmap-stats-ops requires bmap-stats See \`config.log' for more details" "$LINENO" 5; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling additional bitmap statistics" >&5 printf "%s\n" "Enabling additional bitmap statistics" >&6; } printf "%s\n" "#define ENABLE_BMAP_STATS_OPS 1" >>confdefs.h fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling additional bitmap statistics by default" >&5 printf "%s\n" "Disabling additional bitmap statistics by default" >&6; } fi MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library GETTEXT_PACKAGE=e2fsprogs PACKAGE=e2fsprogs VERSION="$E2FSPROGS_VERSION" VERSION=0.14.1 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # 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. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. 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_fn_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 rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$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' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test ${enable_nls+y} then : enableval=$enable_nls; USE_NLS=$enableval else $as_nop USE_NLS=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.20 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 printf "%s\n" "$MSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GMSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 printf "%s\n" "$GMSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XGETTEXT+y} then : printf %s "(cached) " >&6 else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 printf "%s\n" "$XGETTEXT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGMERGE+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 printf "%s\n" "$MSGMERGE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' else if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' else MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' fi fi test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 printf %s "checking for ld... " >&6; } elif test "$GCC" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test -n "$LD"; then # Let the user override the test with a path. : else if test ${acl_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : # The compiler produces 64-bit code. Add option '-b64' so that the # linker groks 64-bit object files. case "$acl_cv_path_LD " in *" -b64 "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc64-*-netbsd*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # The compiler produces 32-bit code. Add option '-m elf32_sparc' # so that the linker groks 32-bit object files. case "$acl_cv_path_LD " in *" -m elf32_sparc "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi LD="$acl_cv_path_LD" fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${acl_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 printf %s "checking for shared library run path origin... " >&6; } if test ${acl_cv_rpath+y} then : printf %s "(cached) " >&6 else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test ${enable_rpath+y} then : enableval=$enable_rpath; : else $as_nop enable_rpath=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 printf %s "checking 32-bit host C ABI... " >&6; } if test ${gl_cv_host_cpu_c_abi_32bit+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$gl_cv_host_cpu_c_abi"; then case "$gl_cv_host_cpu_c_abi" in i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) gl_cv_host_cpu_c_abi_32bit=no ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac else case "$host_cpu" in # CPUs that only support a 32-bit ABI. arc \ | bfin \ | cris* \ | csky \ | epiphany \ | ft32 \ | h8300 \ | m68k \ | microblaze | microblazeel \ | nds32 | nds32le | nds32be \ | nios2 | nios2eb | nios2el \ | or1k* \ | or32 \ | sh | sh1234 | sh1234elb \ | tic6x \ | xtensa* ) gl_cv_host_cpu_c_abi_32bit=yes ;; # CPUs that only support a 64-bit ABI. alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ | mmix ) gl_cv_host_cpu_c_abi_32bit=no ;; i[34567]86 ) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) \ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _ILP32 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=yes else $as_nop gl_cv_host_cpu_c_abi_32bit=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; rs6000 ) gl_cv_host_cpu_c_abi_32bit=yes ;; riscv32 | riscv64 ) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 printf %s "checking for ELF binary format... " >&6; } if test ${gl_cv_elf+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_elf=yes else $as_nop gl_cv_elf=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 printf "%s\n" "$gl_cv_elf" >&6; } if test $gl_cv_elf; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then # Use POSIX od. func_elfclass () { od -A n -t d1 -j 4 -N 1 } else # Use BSD hexdump. func_elfclass () { dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' echo } fi case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 1 } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { test "`func_elfclass | sed -e 's/[ ]//g'`" = 2 } ;; *) # Unknown. acl_is_expected_elfclass () { : } ;; esac else acl_is_expected_elfclass () { : } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 printf %s "checking for the common suffixes of directories in the library search path... " >&6; } if test ${acl_cv_libdirstems+y} then : printf %s "(cached) " >&6 else $as_nop acl_libdirstem=lib acl_libdirstem2= acl_libdirstem3= case "$host_os" in solaris*) if test $HOST_CPU_C_ABI_32BIT = no; then acl_libdirstem2=lib/64 case "$host_cpu" in sparc*) acl_libdirstem3=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test $HOST_CPU_C_ABI_32BIT != no; then # 32-bit or unknown ABI. if test -d /usr/lib32; then acl_libdirstem2=lib32 fi fi if test $HOST_CPU_C_ABI_32BIT != yes; then # 64-bit or unknown ABI. if test -d /usr/lib64; then acl_libdirstem3=lib64 fi fi if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib32 ) acl_libdirstem2=lib32 ;; */lib64 ) acl_libdirstem3=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= fi if test $HOST_CPU_C_ABI_32BIT = no; then # 64-bit ABI. acl_libdirstem2= fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 printf "%s\n" "$acl_cv_libdirstems" >&6; } acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test ${with_libiconv_prefix+y} then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 printf %s "checking for CFPreferencesCopyAppValue... " >&6; } if test ${gt_cv_func_CFPreferencesCopyAppValue+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFPreferencesCopyAppValue=yes else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFLocaleCopyPreferredLanguages=yes else $as_nop gt_cv_func_CFLocaleCopyPreferredLanguages=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 printf %s "checking for GNU gettext in libc... " >&6; } if eval test \${$gt_func_gnugettext_libc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libc=yes" else $as_nop eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test ${with_libintl_prefix+y} then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 printf %s "checking for GNU gettext in libintl... " >&6; } if eval test \${$gt_func_gnugettext_libintl+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libintl=yes" else $as_nop eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 printf %s "checking whether to use NLS... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 printf %s "checking how to link with libintl... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU make" >&5 printf %s "checking for GNU make... " >&6; } if test ${_cv_gnu_make_command+y} then : printf %s "(cached) " >&6 else $as_nop _cv_gnu_make_command='' ; if test -n "$FORCE_NATIVE_MAKE" ; then MAKES="make" else MAKES="make gmake gnumake" fi for a in "$MAKE" $MAKES ; do if test -z "$a" ; then continue ; fi ; if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then _cv_gnu_make_command=$a ; break; fi done ; fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_cv_gnu_make_command" >&5 printf "%s\n" "$_cv_gnu_make_command" >&6; } ; if test "x$_cv_gnu_make_command" != "x" ; then ifGNUmake='' ; ifNotGNUmake='#' ; else ifGNUmake='#' ; ifNotGNUmake='' ; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"Not found\"" >&5 printf "%s\n" "\"Not found\"" >&6; }; fi # Extract the first word of "ln", so it can be a program name with args. set dummy ln; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_LN+y} then : printf %s "(cached) " >&6 else $as_nop case $LN in [\\/]* | ?:[\\/]*) ac_cv_path_LN="$LN" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_LN="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_LN" && ac_cv_path_LN="ln" ;; esac fi LN=$ac_cv_path_LN if test -n "$LN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 printf "%s\n" "$LN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi mkdir_p=$MKDIR_P { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # Extract the first word of "mv", so it can be a program name with args. set dummy mv; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MV+y} then : printf %s "(cached) " >&6 else $as_nop case $MV in [\\/]* | ?:[\\/]*) ac_cv_path_MV="$MV" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_MV="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_MV" && ac_cv_path_MV="mv" ;; esac fi MV=$ac_cv_path_MV if test -n "$MV"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MV" >&5 printf "%s\n" "$MV" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "cp", so it can be a program name with args. set dummy cp; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CP+y} then : printf %s "(cached) " >&6 else $as_nop case $CP in [\\/]* | ?:[\\/]*) ac_cv_path_CP="$CP" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CP" && ac_cv_path_CP="cp" ;; esac fi CP=$ac_cv_path_CP if test -n "$CP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 printf "%s\n" "$CP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RM+y} then : printf %s "(cached) " >&6 else $as_nop case $RM in [\\/]* | ?:[\\/]*) ac_cv_path_RM="$RM" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RM="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_RM" && ac_cv_path_RM="rm" ;; esac fi RM=$ac_cv_path_RM if test -n "$RM"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 printf "%s\n" "$RM" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "chmod", so it can be a program name with args. set dummy chmod; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CHMOD+y} then : printf %s "(cached) " >&6 else $as_nop case $CHMOD in [\\/]* | ?:[\\/]*) ac_cv_path_CHMOD="$CHMOD" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CHMOD="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_CHMOD" && ac_cv_path_CHMOD=":" ;; esac fi CHMOD=$ac_cv_path_CHMOD if test -n "$CHMOD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5 printf "%s\n" "$CHMOD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Extract the first word of "sed", so it can be a program name with args. set dummy sed; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop case $SED in [\\/]* | ?:[\\/]*) ac_cv_path_SED="$SED" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_SED="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SED" && ac_cv_path_SED="sed" ;; esac fi SED=$ac_cv_path_SED if test -n "$SED"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 printf "%s\n" "$SED" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL+y} then : printf %s "(cached) " >&6 else $as_nop case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="perl" ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 printf "%s\n" "$PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "ldconfig", so it can be a program name with args. set dummy ldconfig; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_LDCONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $LDCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LDCONFIG="$LDCONFIG" # 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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_LDCONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_LDCONFIG" && ac_cv_path_LDCONFIG=":" ;; esac fi LDCONFIG=$ac_cv_path_LDCONFIG if test -n "$LDCONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDCONFIG" >&5 printf "%s\n" "$LDCONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="ar" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MAKEINFO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MAKEINFO"; then ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MAKEINFO="makeinfo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MAKEINFO=$ac_cv_prog_MAKEINFO if test -n "$MAKEINFO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKEINFO" >&5 printf "%s\n" "$MAKEINFO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "_$MAKEINFO" = "_"; then MAKEINFO="echo Makeinfo is missing. Info documentation will not be built." else case "$MAKEINFO" in */missing.*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: *** Makeinfo is missing. Info documentation will not be built." >&5 printf "%s\n" "$as_me: WARNING: *** Makeinfo is missing. Info documentation will not be built." >&2;} ;; *) ;; esac fi # See if we need a separate native compiler. if test $cross_compiling = no; then BUILD_CC="$CC" else for ac_prog in gcc cc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_BUILD_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$BUILD_CC"; then ac_cv_prog_BUILD_CC="$BUILD_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_BUILD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi BUILD_CC=$ac_cv_prog_BUILD_CC if test -n "$BUILD_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5 printf "%s\n" "$BUILD_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$BUILD_CC" && break done fi ac_fn_c_check_header_compile "$LINENO" "dirent.h" "ac_cv_header_dirent_h" "$ac_includes_default" if test "x$ac_cv_header_dirent_h" = xyes then : printf "%s\n" "#define HAVE_DIRENT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" if test "x$ac_cv_header_errno_h" = xyes then : printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" if test "x$ac_cv_header_execinfo_h" = xyes then : printf "%s\n" "#define HAVE_EXECINFO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes then : printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" if test "x$ac_cv_header_malloc_h" = xyes then : printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "mntent.h" "ac_cv_header_mntent_h" "$ac_includes_default" if test "x$ac_cv_header_mntent_h" = xyes then : printf "%s\n" "#define HAVE_MNTENT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default" if test "x$ac_cv_header_paths_h" = xyes then : printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes then : printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "semaphore.h" "ac_cv_header_semaphore_h" "$ac_includes_default" if test "x$ac_cv_header_semaphore_h" = xyes then : printf "%s\n" "#define HAVE_SEMAPHORE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default" if test "x$ac_cv_header_setjmp_h" = xyes then : printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default" if test "x$ac_cv_header_signal_h" = xyes then : printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" if test "x$ac_cv_header_stdarg_h" = xyes then : printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" if test "x$ac_cv_header_stdint_h" = xyes then : printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes then : printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" if test "x$ac_cv_header_termios_h" = xyes then : printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default" if test "x$ac_cv_header_termio_h" = xyes then : printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default" if test "x$ac_cv_header_utime_h" = xyes then : printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default" if test "x$ac_cv_header_attr_xattr_h" = xyes then : printf "%s\n" "#define HAVE_ATTR_XATTR_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/falloc.h" "ac_cv_header_linux_falloc_h" "$ac_includes_default" if test "x$ac_cv_header_linux_falloc_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_FALLOC_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/fd.h" "ac_cv_header_linux_fd_h" "$ac_includes_default" if test "x$ac_cv_header_linux_fd_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_FD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/fsmap.h" "ac_cv_header_linux_fsmap_h" "$ac_includes_default" if test "x$ac_cv_header_linux_fsmap_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_FSMAP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/fsverity.h" "ac_cv_header_linux_fsverity_h" "$ac_includes_default" if test "x$ac_cv_header_linux_fsverity_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_FSVERITY_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/major.h" "ac_cv_header_linux_major_h" "$ac_includes_default" if test "x$ac_cv_header_linux_major_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_MAJOR_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/loop.h" "ac_cv_header_linux_loop_h" "$ac_includes_default" if test "x$ac_cv_header_linux_loop_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_LOOP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "linux/types.h" "ac_cv_header_linux_types_h" "$ac_includes_default" if test "x$ac_cv_header_linux_types_h" = xyes then : printf "%s\n" "#define HAVE_LINUX_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "net/if_dl.h" "ac_cv_header_net_if_dl_h" "$ac_includes_default" if test "x$ac_cv_header_net_if_dl_h" = xyes then : printf "%s\n" "#define HAVE_NET_IF_DL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" if test "x$ac_cv_header_netinet_in_h" = xyes then : printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/acl.h" "ac_cv_header_sys_acl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_acl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_ACL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/disklabel.h" "ac_cv_header_sys_disklabel_h" "$ac_includes_default" if test "x$ac_cv_header_sys_disklabel_h" = xyes then : printf "%s\n" "#define HAVE_SYS_DISKLABEL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/disk.h" "ac_cv_header_sys_disk_h" "$ac_includes_default" if test "x$ac_cv_header_sys_disk_h" = xyes then : printf "%s\n" "#define HAVE_SYS_DISK_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" if test "x$ac_cv_header_sys_file_h" = xyes then : printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_ioctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/key.h" "ac_cv_header_sys_key_h" "$ac_includes_default" if test "x$ac_cv_header_sys_key_h" = xyes then : printf "%s\n" "#define HAVE_SYS_KEY_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mkdev_h" = xyes then : printf "%s\n" "#define HAVE_SYS_MKDEV_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mman_h" = xyes then : printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mount_h" = xyes then : printf "%s\n" "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/prctl.h" "ac_cv_header_sys_prctl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_prctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_PRCTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default" if test "x$ac_cv_header_sys_random_h" = xyes then : printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" if test "x$ac_cv_header_sys_resource_h" = xyes then : printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" if test "x$ac_cv_header_sys_select_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "$ac_includes_default" if test "x$ac_cv_header_sys_sockio_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default" if test "x$ac_cv_header_sys_stat_h" = xyes then : printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/syscall.h" "ac_cv_header_sys_syscall_h" "$ac_includes_default" if test "x$ac_cv_header_sys_syscall_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SYSCALL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" if test "x$ac_cv_header_sys_sysmacros_h" = xyes then : printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" if test "x$ac_cv_header_sys_types_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "$ac_includes_default" if test "x$ac_cv_header_sys_un_h" = xyes then : printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default" if test "x$ac_cv_header_sys_wait_h" = xyes then : printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default" if test "x$ac_cv_header_sys_xattr_h" = xyes then : printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h fi case "$host_os" in mingw*) # The above checks only detect system headers, not the headers in # ./include/mingw/, so explicitly define them to be available. printf "%s\n" "#define HAVE_LINUX_TYPES_H 1" >>confdefs.h printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a dd(1) program that supports iflag=fullblock" >&5 printf %s "checking for a dd(1) program that supports iflag=fullblock... " >&6; } DD= for i in dd gdd ; do if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then DD=$i break fi done if test -n "$DD" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DD" >&5 printf "%s\n" "$DD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found, using dd" >&5 printf "%s\n" "not found, using dd" >&6; } DD=dd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: No GNU-compatible dd(1) program found, expect some self-test failures." >&5 printf "%s\n" "$as_me: WARNING: No GNU-compatible dd(1) program found, expect some self-test failures." >&2;} fi ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" " #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_SOCKET #include #endif " if test "x$ac_cv_header_net_if_h" = xyes then : printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done if test "x$ac_cv_func_vprintf" = xno then : ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes then : printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h fi fi ac_fn_c_check_member "$LINENO" "struct dirent" "d_reclen" "ac_cv_member_struct_dirent_d_reclen" "#include " if test "x$ac_cv_member_struct_dirent_d_reclen" = xyes then : printf "%s\n" "#define HAVE_RECLEN_DIRENT 1" >>confdefs.h fi ac_fn_c_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" if test "x$ac_cv_member_struct_stat_st_atim" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "#include " if test "x$ac_cv_type_ssize_t" = xyes then : printf "%s\n" "#define HAVE_TYPE_SSIZE_T 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CFLAGS=$CFLAGS ac_cv_c_undeclared_builtin_options='cannot detect' for ac_arg in '' -fno-builtin; do CFLAGS="$ac_save_CFLAGS $ac_arg" # This test program should *not* compile successfully. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { (void) strchr; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # This test program should compile successfully. # No library function is consistently available on # freestanding implementations, so test against a dummy # declaration. Include always-available headers on the # off chance that they somehow elicit warnings. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include extern void ac_decl (int, char *); int main (void) { (void) ac_decl (0, (char *) 0); (void) ac_decl; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' else $as_nop ac_cv_c_undeclared_builtin_options=$ac_arg fi break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins See \`config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; esac ac_fn_check_decl "$LINENO" "llseek" "ac_cv_have_decl_llseek" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_llseek" = xyes then : printf "%s\n" "#define HAVE_LLSEEK_PROTOTYPE 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "lseek64" "ac_cv_have_decl_lseek64" "#define _LARGEFILE_SOURCE #define _LARGEFILE64_SOURCE #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_lseek64" = xyes then : printf "%s\n" "#define HAVE_LSEEK64_PROTOTYPE 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "fsmap_sizeof" "ac_cv_have_decl_fsmap_sizeof" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_fsmap_sizeof" = xyes then : printf "%s\n" "#define HAVE_FSMAP_SIZEOF 1" >>confdefs.h fi # Check whether --enable-largefile was given. if test ${enable_largefile+y} then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 printf %s "checking for special C compiler options needed for large files... " >&6; } if test ${ac_cv_sys_largefile_CC+y} then : printf %s "(cached) " >&6 else $as_nop 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : break fi rm -f core conftest.err conftest.$ac_objext conftest.beam CC="$CC -n32" if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if test ${ac_cv_sys_file_offset_bits+y} then : printf %s "(cached) " >&6 else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } if test ${ac_cv_sys_large_files+y} then : printf %s "(cached) " >&6 else $as_nop while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 printf "%s\n" "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h ;; esac rm -rf conftest* fi fi # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 printf %s "checking size of short... " >&6; } if test ${ac_cv_sizeof_short+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_short" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 printf "%s\n" "$ac_cv_sizeof_short" >&6; } printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 printf %s "checking size of int... " >&6; } if test ${ac_cv_sizeof_int+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_int" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 printf "%s\n" "$ac_cv_sizeof_int" >&6; } printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 printf %s "checking size of long... " >&6; } if test ${ac_cv_sizeof_long+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_long" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 printf "%s\n" "$ac_cv_sizeof_long" >&6; } printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 printf %s "checking size of long long... " >&6; } if test ${ac_cv_sizeof_long_long+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_long_long" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 printf "%s\n" "$ac_cv_sizeof_long_long" >&6; } printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 printf %s "checking size of off_t... " >&6; } if test ${ac_cv_sizeof_off_t+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_off_t" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (off_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_off_t=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 printf "%s\n" "$ac_cv_sizeof_off_t" >&6; } printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 printf %s "checking size of time_t... " >&6; } if test ${ac_cv_sizeof_time_t+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_time_t" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (time_t) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_time_t=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 printf "%s\n" "$ac_cv_sizeof_time_t" >&6; } printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h # The cast to long int 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. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 printf %s "checking size of void *... " >&6; } if test ${ac_cv_sizeof_void_p+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default" then : else $as_nop if test "$ac_cv_type_void_p" = yes; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 printf "%s\n" "$ac_cv_sizeof_void_p" >&6; } printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h SIZEOF_SHORT=$ac_cv_sizeof_short SIZEOF_INT=$ac_cv_sizeof_int SIZEOF_LONG=$ac_cv_sizeof_long SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long SIZEOF_OFF_T=$ac_cv_sizeof_off_t SIZEOF_TIME_T=$ac_cv_sizeof_time_t { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 printf %s "checking whether byte ordering is bigendian... " >&6; } if test ${ac_cv_c_bigendian+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO" then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac if test $cross_compiling = no; then BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh else CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh fi ASM_TYPES_HEADER=./asm_types.h echo "/* These defines are needed for the public ext2fs.h header file */" \ > public_config.h if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef HAVE_SYS_TYPES_H" >> public_config.h fi if grep SIZEOF_TIME_T confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef SIZEOF_TIME_T" >> public_config.h fi if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef WORDS_BIGENDIAN" >> public_config.h fi rm -f tmp_config.$$ PUBLIC_CONFIG_HEADER=./public_config.h ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" if test "x$ac_cv_header_inttypes_h" = xyes then : printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" if test "x$ac_cv_type_intptr_t" = xyes then : printf "%s\n" "#define HAVE_INTPTR_T 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct stat has a st_flags field" >&5 printf %s "checking whether struct stat has a st_flags field... " >&6; } if test ${e2fsprogs_cv_struct_st_flags+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { struct stat stat; stat.st_flags = 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : e2fsprogs_cv_struct_st_flags=yes else $as_nop e2fsprogs_cv_struct_st_flags=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $e2fsprogs_cv_struct_st_flags" >&5 printf "%s\n" "$e2fsprogs_cv_struct_st_flags" >&6; } if test "$e2fsprogs_cv_struct_st_flags" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether st_flags field is useful" >&5 printf %s "checking whether st_flags field is useful... " >&6; } if test ${e2fsprogs_cv_struct_st_flags_immut+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { struct stat stat; stat.st_flags |= UF_IMMUTABLE; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : e2fsprogs_cv_struct_st_flags_immut=yes else $as_nop e2fsprogs_cv_struct_st_flags_immut=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $e2fsprogs_cv_struct_st_flags_immut" >&5 printf "%s\n" "$e2fsprogs_cv_struct_st_flags_immut" >&6; } if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then printf "%s\n" "#define HAVE_STAT_FLAGS 1" >>confdefs.h fi fi ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#include #include " if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes then : printf "%s\n" "#define HAVE_SA_LEN 1" >>confdefs.h fi if test -n "$BLKID_CMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blkid_probe_get_topology in -lblkid" >&5 printf %s "checking for blkid_probe_get_topology in -lblkid... " >&6; } if test ${ac_cv_lib_blkid_blkid_probe_get_topology+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lblkid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char blkid_probe_get_topology (); int main (void) { return blkid_probe_get_topology (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_blkid_blkid_probe_get_topology=yes else $as_nop ac_cv_lib_blkid_blkid_probe_get_topology=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_probe_get_topology" >&5 printf "%s\n" "$ac_cv_lib_blkid_blkid_probe_get_topology" >&6; } if test "x$ac_cv_lib_blkid_blkid_probe_get_topology" = xyes then : printf "%s\n" "#define HAVE_BLKID_PROBE_GET_TOPOLOGY 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blkid_topology_get_dax in -lblkid" >&5 printf %s "checking for blkid_topology_get_dax in -lblkid... " >&6; } if test ${ac_cv_lib_blkid_blkid_topology_get_dax+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lblkid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char blkid_topology_get_dax (); int main (void) { return blkid_topology_get_dax (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_blkid_blkid_topology_get_dax=yes else $as_nop ac_cv_lib_blkid_blkid_topology_get_dax=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_topology_get_dax" >&5 printf "%s\n" "$ac_cv_lib_blkid_blkid_topology_get_dax" >&6; } if test "x$ac_cv_lib_blkid_blkid_topology_get_dax" = xyes then : printf "%s\n" "#define HAVE_BLKID_TOPOLOGY_GET_DAX 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for blkid_probe_enable_partitions in -lblkid" >&5 printf %s "checking for blkid_probe_enable_partitions in -lblkid... " >&6; } if test ${ac_cv_lib_blkid_blkid_probe_enable_partitions+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lblkid $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char blkid_probe_enable_partitions (); int main (void) { return blkid_probe_enable_partitions (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_blkid_blkid_probe_enable_partitions=yes else $as_nop ac_cv_lib_blkid_blkid_probe_enable_partitions=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_probe_enable_partitions" >&5 printf "%s\n" "$ac_cv_lib_blkid_blkid_probe_enable_partitions" >&6; } if test "x$ac_cv_lib_blkid_blkid_probe_enable_partitions" = xyes then : printf "%s\n" "#define HAVE_BLKID_PROBE_ENABLE_PARTITIONS 1" >>confdefs.h fi fi if test -n "$DLOPEN_LIB" ; then ac_cv_func_dlopen=yes fi ac_fn_c_check_func "$LINENO" "__secure_getenv" "ac_cv_func___secure_getenv" if test "x$ac_cv_func___secure_getenv" = xyes then : printf "%s\n" "#define HAVE___SECURE_GETENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "add_key" "ac_cv_func_add_key" if test "x$ac_cv_func_add_key" = xyes then : printf "%s\n" "#define HAVE_ADD_KEY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "backtrace" "ac_cv_func_backtrace" if test "x$ac_cv_func_backtrace" = xyes then : printf "%s\n" "#define HAVE_BACKTRACE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags" if test "x$ac_cv_func_chflags" = xyes then : printf "%s\n" "#define HAVE_CHFLAGS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fadvise64" "ac_cv_func_fadvise64" if test "x$ac_cv_func_fadvise64" = xyes then : printf "%s\n" "#define HAVE_FADVISE64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fallocate" "ac_cv_func_fallocate" if test "x$ac_cv_func_fallocate" = xyes then : printf "%s\n" "#define HAVE_FALLOCATE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fallocate64" "ac_cv_func_fallocate64" if test "x$ac_cv_func_fallocate64" = xyes then : printf "%s\n" "#define HAVE_FALLOCATE64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown" if test "x$ac_cv_func_fchown" = xyes then : printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl" if test "x$ac_cv_func_fcntl" = xyes then : printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fdatasync" "ac_cv_func_fdatasync" if test "x$ac_cv_func_fdatasync" = xyes then : printf "%s\n" "#define HAVE_FDATASYNC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fstat64" "ac_cv_func_fstat64" if test "x$ac_cv_func_fstat64" = xyes then : printf "%s\n" "#define HAVE_FSTAT64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fsync" "ac_cv_func_fsync" if test "x$ac_cv_func_fsync" = xyes then : printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ftruncate64" "ac_cv_func_ftruncate64" if test "x$ac_cv_func_ftruncate64" = xyes then : printf "%s\n" "#define HAVE_FTRUNCATE64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes" if test "x$ac_cv_func_futimes" = xyes then : printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" if test "x$ac_cv_func_getcwd" = xyes then : printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getdtablesize" "ac_cv_func_getdtablesize" if test "x$ac_cv_func_getdtablesize" = xyes then : printf "%s\n" "#define HAVE_GETDTABLESIZE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" if test "x$ac_cv_func_getentropy" = xyes then : printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" if test "x$ac_cv_func_gethostname" = xyes then : printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getmntinfo" "ac_cv_func_getmntinfo" if test "x$ac_cv_func_getmntinfo" = xyes then : printf "%s\n" "#define HAVE_GETMNTINFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" if test "x$ac_cv_func_getpwuid_r" = xyes then : printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" if test "x$ac_cv_func_getrandom" = xyes then : printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" if test "x$ac_cv_func_getrlimit" = xyes then : printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" if test "x$ac_cv_func_getrusage" = xyes then : printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "jrand48" "ac_cv_func_jrand48" if test "x$ac_cv_func_jrand48" = xyes then : printf "%s\n" "#define HAVE_JRAND48 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "keyctl" "ac_cv_func_keyctl" if test "x$ac_cv_func_keyctl" = xyes then : printf "%s\n" "#define HAVE_KEYCTL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "llistxattr" "ac_cv_func_llistxattr" if test "x$ac_cv_func_llistxattr" = xyes then : printf "%s\n" "#define HAVE_LLISTXATTR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "llseek" "ac_cv_func_llseek" if test "x$ac_cv_func_llseek" = xyes then : printf "%s\n" "#define HAVE_LLSEEK 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "lseek64" "ac_cv_func_lseek64" if test "x$ac_cv_func_lseek64" = xyes then : printf "%s\n" "#define HAVE_LSEEK64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mallinfo" "ac_cv_func_mallinfo" if test "x$ac_cv_func_mallinfo" = xyes then : printf "%s\n" "#define HAVE_MALLINFO 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mallinfo2" "ac_cv_func_mallinfo2" if test "x$ac_cv_func_mallinfo2" = xyes then : printf "%s\n" "#define HAVE_MALLINFO2 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbstowcs" "ac_cv_func_mbstowcs" if test "x$ac_cv_func_mbstowcs" = xyes then : printf "%s\n" "#define HAVE_MBSTOWCS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "memalign" "ac_cv_func_memalign" if test "x$ac_cv_func_memalign" = xyes then : printf "%s\n" "#define HAVE_MEMALIGN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" if test "x$ac_cv_func_mempcpy" = xyes then : printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" if test "x$ac_cv_func_mmap" = xyes then : printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "msync" "ac_cv_func_msync" if test "x$ac_cv_func_msync" = xyes then : printf "%s\n" "#define HAVE_MSYNC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" if test "x$ac_cv_func_nanosleep" = xyes then : printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "open64" "ac_cv_func_open64" if test "x$ac_cv_func_open64" = xyes then : printf "%s\n" "#define HAVE_OPEN64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf" if test "x$ac_cv_func_pathconf" = xyes then : printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise" if test "x$ac_cv_func_posix_fadvise" = xyes then : printf "%s\n" "#define HAVE_POSIX_FADVISE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "posix_fadvise64" "ac_cv_func_posix_fadvise64" if test "x$ac_cv_func_posix_fadvise64" = xyes then : printf "%s\n" "#define HAVE_POSIX_FADVISE64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign" if test "x$ac_cv_func_posix_memalign" = xyes then : printf "%s\n" "#define HAVE_POSIX_MEMALIGN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "prctl" "ac_cv_func_prctl" if test "x$ac_cv_func_prctl" = xyes then : printf "%s\n" "#define HAVE_PRCTL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" if test "x$ac_cv_func_pread" = xyes then : printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite" if test "x$ac_cv_func_pwrite" = xyes then : printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pread64" "ac_cv_func_pread64" if test "x$ac_cv_func_pread64" = xyes then : printf "%s\n" "#define HAVE_PREAD64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "pwrite64" "ac_cv_func_pwrite64" if test "x$ac_cv_func_pwrite64" = xyes then : printf "%s\n" "#define HAVE_PWRITE64 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "qsort_r" "ac_cv_func_qsort_r" if test "x$ac_cv_func_qsort_r" = xyes then : printf "%s\n" "#define HAVE_QSORT_R 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "secure_getenv" "ac_cv_func_secure_getenv" if test "x$ac_cv_func_secure_getenv" = xyes then : printf "%s\n" "#define HAVE_SECURE_GETENV 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setmntent" "ac_cv_func_setmntent" if test "x$ac_cv_func_setmntent" = xyes then : printf "%s\n" "#define HAVE_SETMNTENT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid" if test "x$ac_cv_func_setresgid" = xyes then : printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid" if test "x$ac_cv_func_setresuid" = xyes then : printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = xyes then : printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "srandom" "ac_cv_func_srandom" if test "x$ac_cv_func_srandom" = xyes then : printf "%s\n" "#define HAVE_SRANDOM 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" if test "x$ac_cv_func_stpcpy" = xyes then : printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" if test "x$ac_cv_func_strnlen" = xyes then : printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strptime" "ac_cv_func_strptime" if test "x$ac_cv_func_strptime" = xyes then : printf "%s\n" "#define HAVE_STRPTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull" if test "x$ac_cv_func_strtoull" = xyes then : printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sync_file_range" "ac_cv_func_sync_file_range" if test "x$ac_cv_func_sync_file_range" = xyes then : printf "%s\n" "#define HAVE_SYNC_FILE_RANGE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf" if test "x$ac_cv_func_sysconf" = xyes then : printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep" if test "x$ac_cv_func_usleep" = xyes then : printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime" if test "x$ac_cv_func_utime" = xyes then : printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes" if test "x$ac_cv_func_utimes" = xyes then : printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "valloc" "ac_cv_func_valloc" if test "x$ac_cv_func_valloc" = xyes then : printf "%s\n" "#define HAVE_VALLOC 1" >>confdefs.h fi SOCKET_LIB='' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 printf %s "checking for socket in -lsocket... " >&6; } if test ${ac_cv_lib_socket_socket+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char socket (); int main (void) { return socket (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_socket=yes else $as_nop ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } if test "x$ac_cv_lib_socket_socket" = xyes then : SOCKET_LIB=-lsocket fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for magic_file in -lmagic" >&5 printf %s "checking for magic_file in -lmagic... " >&6; } if test ${ac_cv_lib_magic_magic_file+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lmagic $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char magic_file (); int main (void) { return magic_file (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_magic_magic_file=yes else $as_nop ac_cv_lib_magic_magic_file=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_magic_magic_file" >&5 printf "%s\n" "$ac_cv_lib_magic_magic_file" >&6; } if test "x$ac_cv_lib_magic_magic_file" = xyes then : MAGIC_LIB=-lmagic ac_fn_c_check_header_compile "$LINENO" "magic.h" "ac_cv_header_magic_h" "$ac_includes_default" if test "x$ac_cv_header_magic_h" = xyes then : printf "%s\n" "#define HAVE_MAGIC_H 1" >>confdefs.h fi fi if test "$ac_cv_func_dlopen" = yes ; then MAGIC_LIB=$DLOPEN_LIB fi # Check whether --with-libarchive was given. if test ${with_libarchive+y} then : withval=$with_libarchive; if test "$withval" = "no" then try_libarchive="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling libarchive support" >&5 printf "%s\n" "Disabling libarchive support" >&6; } printf "%s\n" "#define CONFIG_DISABLE_LIBARCHIVE 1" >>confdefs.h elif test "$withval" = "direct" then try_libarchive="direct" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Testing for libarchive support (forced direct link)" >&5 printf "%s\n" "Testing for libarchive support (forced direct link)" >&6; } else try_libarchive="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Testing for libarchive support (with dlopen)" >&5 printf "%s\n" "Testing for libarchive support (with dlopen)" >&6; } fi else $as_nop try_libarchive="yes" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Try testing for libarchive support (with dlopen) by default" >&5 printf "%s\n" "Try testing for libarchive support (with dlopen) by default" >&6; } fi ARCHIVE_LIB= if test -n "$try_libarchive" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archive_read_new in -larchive" >&5 printf %s "checking for archive_read_new in -larchive... " >&6; } if test ${ac_cv_lib_archive_archive_read_new+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-larchive $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char archive_read_new (); int main (void) { return archive_read_new (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_archive_archive_read_new=yes else $as_nop ac_cv_lib_archive_archive_read_new=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_archive_archive_read_new" >&5 printf "%s\n" "$ac_cv_lib_archive_archive_read_new" >&6; } if test "x$ac_cv_lib_archive_archive_read_new" = xyes then : ARCHIVE_LIB=-larchive ac_fn_c_check_header_compile "$LINENO" "archive.h" "ac_cv_header_archive_h" "$ac_includes_default" if test "x$ac_cv_header_archive_h" = xyes then : printf "%s\n" "#define HAVE_ARCHIVE_H 1" >>confdefs.h fi fi if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then ARCHIVE_LIB=$DLOPEN_LIB printf "%s\n" "#define CONFIG_DLOPEN_LIBARCHIVE 1" >>confdefs.h fi if test "$ac_cv_header_archive_h" != "yes" then ARCHIVE_LIB= fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 printf %s "checking for clock_gettime in -lrt... " >&6; } if test ${ac_cv_lib_rt_clock_gettime+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char clock_gettime (); int main (void) { return clock_gettime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_rt_clock_gettime=yes else $as_nop ac_cv_lib_rt_clock_gettime=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; } if test "x$ac_cv_lib_rt_clock_gettime" = xyes then : CLOCK_GETTIME_LIB=-lrt fi FUSE_CMT= FUSE_LIB= # Check whether --enable-fuse2fs was given. if test ${enable_fuse2fs+y} then : enableval=$enable_fuse2fs; if test "$enableval" = "no" then FUSE_CMT="#" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling fuse2fs" >&5 printf "%s\n" "Disabling fuse2fs" >&6; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __linux__ #include #include #include #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse2fs Linux headers. See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.err conftest.i conftest.$ac_ext fuse3_CFLAGS C compiler flags for fuse3, overriding pkg-config fuse3_LIBS linker flags for fuse3, overriding pkg-config pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse3" >&5 printf %s "checking for fuse3... " >&6; } if test -n "$fuse3_CFLAGS"; then pkg_cv_fuse3_CFLAGS="$fuse3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_fuse3_CFLAGS=`$PKG_CONFIG --cflags "fuse3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$fuse3_LIBS"; then pkg_cv_fuse3_LIBS="$fuse3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_fuse3_LIBS=`$PKG_CONFIG --libs "fuse3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then fuse3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fuse3" 2>&1` else fuse3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fuse3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$fuse3_PKG_ERRORS" >&5 for ac_header in pthread.h fuse.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29 " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse2fs headers. See \`config.log' for more details" "$LINENO" 5; } fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5 printf %s "checking for fuse_main in -losxfuse... " >&6; } if test ${ac_cv_lib_osxfuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-losxfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_osxfuse_fuse_main=yes else $as_nop ac_cv_lib_osxfuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; } if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes then : FUSE_LIB=-losxfuse else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5 printf %s "checking for fuse_main in -lfuse... " >&6; } if test ${ac_cv_lib_fuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_fuse_fuse_main=yes else $as_nop ac_cv_lib_fuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; } if test "x$ac_cv_lib_fuse_fuse_main" = xyes then : FUSE_LIB=-lfuse else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse library. See \`config.log' for more details" "$LINENO" 5; } fi fi elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } for ac_header in pthread.h fuse.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29 " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse2fs headers. See \`config.log' for more details" "$LINENO" 5; } fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5 printf %s "checking for fuse_main in -losxfuse... " >&6; } if test ${ac_cv_lib_osxfuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-losxfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_osxfuse_fuse_main=yes else $as_nop ac_cv_lib_osxfuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; } if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes then : FUSE_LIB=-losxfuse else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5 printf %s "checking for fuse_main in -lfuse... " >&6; } if test ${ac_cv_lib_fuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_fuse_fuse_main=yes else $as_nop ac_cv_lib_fuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; } if test "x$ac_cv_lib_fuse_fuse_main" = xyes then : FUSE_LIB=-lfuse else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse library. See \`config.log' for more details" "$LINENO" 5; } fi fi else fuse3_CFLAGS=$pkg_cv_fuse3_CFLAGS fuse3_LIBS=$pkg_cv_fuse3_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } FUSE_LIB=-lfuse3 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling fuse2fs" >&5 printf "%s\n" "Enabling fuse2fs" >&6; } fi else $as_nop pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse3" >&5 printf %s "checking for fuse3... " >&6; } if test -n "$fuse3_CFLAGS"; then pkg_cv_fuse3_CFLAGS="$fuse3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_fuse3_CFLAGS=`$PKG_CONFIG --cflags "fuse3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$fuse3_LIBS"; then pkg_cv_fuse3_LIBS="$fuse3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_fuse3_LIBS=`$PKG_CONFIG --libs "fuse3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then fuse3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fuse3" 2>&1` else fuse3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fuse3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$fuse3_PKG_ERRORS" >&5 for ac_header in pthread.h fuse.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29 #ifdef __linux__ # include # include # include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop FUSE_CMT="#" fi done if test -z "$FUSE_CMT" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5 printf %s "checking for fuse_main in -losxfuse... " >&6; } if test ${ac_cv_lib_osxfuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-losxfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_osxfuse_fuse_main=yes else $as_nop ac_cv_lib_osxfuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; } if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes then : FUSE_LIB=-losxfuse else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5 printf %s "checking for fuse_main in -lfuse... " >&6; } if test ${ac_cv_lib_fuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_fuse_fuse_main=yes else $as_nop ac_cv_lib_fuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; } if test "x$ac_cv_lib_fuse_fuse_main" = xyes then : FUSE_LIB=-lfuse else $as_nop FUSE_CMT="#" fi fi fi elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } for ac_header in pthread.h fuse.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29 #ifdef __linux__ # include # include # include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop FUSE_CMT="#" fi done if test -z "$FUSE_CMT" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5 printf %s "checking for fuse_main in -losxfuse... " >&6; } if test ${ac_cv_lib_osxfuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-losxfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_osxfuse_fuse_main=yes else $as_nop ac_cv_lib_osxfuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; } if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes then : FUSE_LIB=-losxfuse else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5 printf %s "checking for fuse_main in -lfuse... " >&6; } if test ${ac_cv_lib_fuse_fuse_main+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lfuse $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char fuse_main (); int main (void) { return fuse_main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_fuse_fuse_main=yes else $as_nop ac_cv_lib_fuse_fuse_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5 printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; } if test "x$ac_cv_lib_fuse_fuse_main" = xyes then : FUSE_LIB=-lfuse else $as_nop FUSE_CMT="#" fi fi fi else fuse3_CFLAGS=$pkg_cv_fuse3_CFLAGS fuse3_LIBS=$pkg_cv_fuse3_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } FUSE_LIB=-lfuse3 fi if test -z "$FUSE_CMT" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling fuse2fs by default." >&5 printf "%s\n" "Enabling fuse2fs by default." >&6; } fi fi if test "$FUSE_LIB" = "-lfuse3" then FUSE_USE_VERSION=35 CFLAGS="$CFLAGS $fuse3_CFLAGS" LDFLAGS="$LDFLAGS $fuse3_LDFLAGS" for ac_header in pthread.h fuse.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 35 #ifdef __linux__ #include #include #include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Cannot find fuse3 fuse2fs headers. See \`config.log' for more details" "$LINENO" 5; } fi done elif test -n "$FUSE_LIB" then FUSE_USE_VERSION=29 fi if test -n "$FUSE_USE_VERSION" then printf "%s\n" "#define FUSE_USE_VERSION $FUSE_USE_VERSION" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5 printf %s "checking for optreset... " >&6; } if test ${ac_cv_have_optreset+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "optreset" >/dev/null 2>&1 then : ac_cv_have_optreset=yes else $as_nop ac_cv_have_optreset=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_optreset" >&5 printf "%s\n" "$ac_cv_have_optreset" >&6; } if test $ac_cv_have_optreset = yes; then printf "%s\n" "#define HAVE_OPTRESET 1" >>confdefs.h fi SEM_INIT_LIB='' echo GL_THREADS_API: ${gl_threads_api} if test "${gl_threads_api}" != none then ac_fn_c_check_func "$LINENO" "sem_init" "ac_cv_func_sem_init" if test "x$ac_cv_func_sem_init" = xyes then : else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sem_init in -lpthread" >&5 printf %s "checking for sem_init in -lpthread... " >&6; } if test ${ac_cv_lib_pthread_sem_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char sem_init (); int main (void) { return sem_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_pthread_sem_init=yes else $as_nop ac_cv_lib_pthread_sem_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_sem_init" >&5 printf "%s\n" "$ac_cv_lib_pthread_sem_init" >&6; } if test "x$ac_cv_lib_pthread_sem_init" = xyes then : printf "%s\n" "#define HAVE_SEM_INIT 1" >>confdefs.h SEM_INIT_LIB=-lpthread else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sem_init in -lrt" >&5 printf %s "checking for sem_init in -lrt... " >&6; } if test ${ac_cv_lib_rt_sem_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char sem_init (); int main (void) { return sem_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_rt_sem_init=yes else $as_nop ac_cv_lib_rt_sem_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sem_init" >&5 printf "%s\n" "$ac_cv_lib_rt_sem_init" >&6; } if test "x$ac_cv_lib_rt_sem_init" = xyes then : printf "%s\n" "#define HAVE_SEM_INIT 1" >>confdefs.h SEM_INIT_LIB=-lrt else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sem_init in -lposix4" >&5 printf %s "checking for sem_init in -lposix4... " >&6; } if test ${ac_cv_lib_posix4_sem_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lposix4 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char sem_init (); int main (void) { return sem_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_posix4_sem_init=yes else $as_nop ac_cv_lib_posix4_sem_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sem_init" >&5 printf "%s\n" "$ac_cv_lib_posix4_sem_init" >&6; } if test "x$ac_cv_lib_posix4_sem_init" = xyes then : printf "%s\n" "#define HAVE_SEM_INIT 1" >>confdefs.h SEM_INIT_LIB=-lposix4 fi fi fi fi fi if test "$ac_cv_func_qsort_r" != no then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether qsort_r is GNU version" >&5 printf %s "checking whether qsort_r is GNU version... " >&6; } if test ${e2_cv_gnu_qsort_r+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include void (qsort_r)(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : e2_cv_gnu_qsort_r=yes else $as_nop e2_cv_gnu_qsort_r=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $e2_cv_gnu_qsort_r" >&5 printf "%s\n" "$e2_cv_gnu_qsort_r" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether qsort_r is BSD version" >&5 printf %s "checking whether qsort_r is BSD version... " >&6; } if test ${e2_cv_bsd_qsort_r+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include void (qsort_r)(void *base, size_t nmemb, size_t size, void *arg, int (*compar)(void *, const void *, const void *)); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : e2_cv_bsd_qsort_r=yes else $as_nop e2_cv_bsd_qsort_r=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $e2_cv_bsd_qsort_r" >&5 printf "%s\n" "$e2_cv_bsd_qsort_r" >&6; } case "$e2_cv_gnu_qsort_r:$e2_cv_bsd_qsort_r" in #( yes:no) : printf "%s\n" "#define HAVE_GNU_QSORT_R 1" >>confdefs.h ;; #( no:yes) : printf "%s\n" "#define HAVE_BSD_QSORT_R 1" >>confdefs.h ;; #( *) : ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unified diff option" >&5 printf %s "checking for unified diff option... " >&6; } if diff -u $0 $0 > /dev/null 2>&1 ; then UNI_DIFF_OPTS=-u else UNI_DIFF_OPTS=-c fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $UNI_DIFF_OPTS" >&5 printf "%s\n" "$UNI_DIFF_OPTS" >&6; } case "$host_os" in linux*) printf "%s\n" "#define HAVE_EXT2_IOCTLS 1" >>confdefs.h ;; esac printf %s "checking for mount 'nosuid' option... " cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *temp = (void *)(MS_NOSUID); (void) temp; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_MOUNT_NOSUID 1" >>confdefs.h ac_cv_mount_nosuid=yes printf "%s\n" "yes" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *temp = (void *)(MNT_NOSUID); (void) temp; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_MOUNT_NOSUID 1" >>confdefs.h ac_cv_mount_nosuid=yes printf "%s\n" "yes" else $as_nop ac_cv_mount_nosuid=no printf "%s\n" "no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext printf %s "checking for mount 'nodev' option... " cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *temp = (void *)(MS_NODEV); (void) temp; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_MOUNT_NODEV 1" >>confdefs.h ac_cv_mount_nodev=yes printf "%s\n" "yes" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *temp = (void *)(MNT_NODEV); (void) temp; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : printf "%s\n" "#define HAVE_MOUNT_NODEV 1" >>confdefs.h ac_cv_mount_nodev=yes printf "%s\n" "yes" else $as_nop ac_cv_mount_nodev=no printf "%s\n" "no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Check whether --enable-lto was given. if test ${enable_lto+y} then : enableval=$enable_lto; else $as_nop enable_lto=no fi if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if C compiler supports LTO" >&5 printf %s "checking if C compiler supports LTO... " >&6; } OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" LTO_FLAGS="-g -flto -ffat-lto-objects" CFLAGS="$CFLAGS $LTO_FLAGS" LDFLAGS="$LDFLAGS $LTO_FLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } lto_cflags=$LTO_FLAGS lto_ldflags=$LTO_FLAGS # Extract the first word of "gcc-ar", so it can be a program name with args. set dummy gcc-ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_gcc_ar+y} then : printf %s "(cached) " >&6 else $as_nop case $gcc_ar in [\\/]* | ?:[\\/]*) ac_cv_path_gcc_ar="$gcc_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_gcc_ar="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi gcc_ar=$ac_cv_path_gcc_ar if test -n "$gcc_ar"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gcc_ar" >&5 printf "%s\n" "$gcc_ar" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gcc-ranlib", so it can be a program name with args. set dummy gcc-ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_gcc_ranlib+y} then : printf %s "(cached) " >&6 else $as_nop case $gcc_ranlib in [\\/]* | ?:[\\/]*) ac_cv_path_gcc_ranlib="$gcc_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 case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_gcc_ranlib="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi gcc_ranlib=$ac_cv_path_gcc_ranlib if test -n "$gcc_ranlib"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gcc_ranlib" >&5 printf "%s\n" "$gcc_ranlib" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then have_lto=yes AR="${gcc_ar}" RANLIB="${gcc_ranlib}" fi CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" fi if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then as_fn_error $? "LTO not supported by compiler." "$LINENO" 5 fi # Check whether --enable-ubsan was given. if test ${enable_ubsan+y} then : enableval=$enable_ubsan; else $as_nop enable_ubsan=no fi if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if C compiler supports UBSAN" >&5 printf %s "checking if C compiler supports UBSAN... " >&6; } OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" UBSAN_FLAGS="-fsanitize=undefined" CFLAGS="$CFLAGS $UBSAN_FLAGS" LDFLAGS="$LDFLAGS $UBSAN_FLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ubsan_cflags=$UBSAN_FLAGS ubsan_ldflags=$UBSAN_FLAGS have_ubsan=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" fi if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then as_fn_error $? "UBSAN not supported by compiler." "$LINENO" 5 fi # Check whether --enable-addrsan was given. if test ${enable_addrsan+y} then : enableval=$enable_addrsan; else $as_nop enable_addrsan=no fi if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if C compiler supports ADDRSAN" >&5 printf %s "checking if C compiler supports ADDRSAN... " >&6; } OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" ADDRSAN_FLAGS="-fsanitize=address" CFLAGS="$CFLAGS $ADDRSAN_FLAGS" LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } addrsan_cflags=$ADDRSAN_FLAGS addrsan_ldflags=$ADDRSAN_FLAGS have_addrsan=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" fi if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then as_fn_error $? "ADDRSAN not supported by compiler." "$LINENO" 5 fi # Check whether --enable-threadsan was given. if test ${enable_threadsan+y} then : enableval=$enable_threadsan; else $as_nop enable_threadsan=no fi if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if C compiler supports THREADSAN" >&5 printf %s "checking if C compiler supports THREADSAN... " >&6; } OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" THREADSAN_FLAGS="-fsanitize=thread" CFLAGS="$CFLAGS $THREADSAN_FLAGS" LDFLAGS="$LDFLAGS $THREADSAN_FLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } threadsan_cflags=$THREADSAN_FLAGS threadsan_ldflags=$THREADSAN_FLAGS have_threadsan=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" fi if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then as_fn_error $? "THREADSAN not supported by compiler." "$LINENO" 5 fi if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ADDRSAN and THREADSAN are not known to work together." >&5 printf "%s\n" "$as_me: WARNING: ADDRSAN and THREADSAN are not known to work together." >&2;} fi FUZZING_CMT="#" # Check whether --enable-fuzzing was given. if test ${enable_fuzzing+y} then : enableval=$enable_fuzzing; else $as_nop enable_fuzzing=no fi if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if C compiler supports fuzzing sanitizer" >&5 printf %s "checking if C compiler supports fuzzing sanitizer... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu OLD_CXXFLAGS="$CXXFLAGS" OLD_LDFLAGS="$LDFLAGS" FUZZER_FLAGS="-fsanitize=fuzzer" CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS" LDFLAGS="$LDFLAGS $FUZZER_FLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fuzzer_cflags=$FUZZER_FLAGS fuzzer_ldflags=$FUZZER_FLAGS FUZZING_CMT= have_fuzzer=yes else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "fuzzing requested but not available" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXXFLAGS="${OLD_CXXFLAGS}" LDFLAGS="${OLD_LDFLAGS}" 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 fi LINUX_CMT="#" CYGWIN_CMT="#" UNIX_CMT= case "$host_os" in linux*) LINUX_CMT= ;; cygwin) CYGWIN_CMT= UNIX_CMT="#" ;; esac E2SCRUB_CMT="$LINUX_CMT" case "$host_os" in linux* | gnu* | k*bsd*-gnu) if test "$prefix" = NONE -a "$root_prefix" = NONE ; then root_prefix=""; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: On $host_os systems, root_prefix defaults to ''" >&5 printf "%s\n" "On $host_os systems, root_prefix defaults to ''" >&6; } fi ;; esac case "$host_os" in linux* | gnu* | k*bsd*-gnu) if test "$prefix" = NONE ; then prefix="/usr"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: On $host_os systems, prefix defaults to /usr" >&5 printf "%s\n" "On $host_os systems, prefix defaults to /usr" >&6; } if test "$mandir" = '${prefix}/man' ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ...and mandir defaults to /usr/share/man" >&5 printf "%s\n" "...and mandir defaults to /usr/share/man" >&6; } mandir=/usr/share/man fi fi ;; esac if test "$root_prefix" = NONE ; then if test "$prefix" = NONE ; then root_prefix="$ac_default_prefix" else root_prefix="$prefix" fi root_bindir=$bindir root_sbindir=$sbindir root_libdir=$libdir root_sysconfdir=$sysconfdir else root_bindir='${root_prefix}/bin' root_sbindir='${root_prefix}/sbin' root_libdir='${root_prefix}/lib' root_sysconfdir='${root_prefix}/etc' fi if test "$bindir" != '${exec_prefix}/bin'; then root_bindir=$bindir { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Setting root_bindir to $root_bindir" >&5 printf "%s\n" "Setting root_bindir to $root_bindir" >&6; } fi if test "$sbindir" != '${exec_prefix}/sbin'; then root_sbindir=$sbindir { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Setting root_sbindir to $root_sbindir" >&5 printf "%s\n" "Setting root_sbindir to $root_sbindir" >&6; } fi if test "$libdir" != '${exec_prefix}/lib'; then root_libdir=$libdir { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Setting root_libdir to $root_libdir" >&5 printf "%s\n" "Setting root_libdir to $root_libdir" >&6; } fi if test "$sysconfdir" != '${prefix}/etc'; then root_sysconfdir=$sysconfdir { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Setting root_sysconfdir to $root_sysconfdir" >&5 printf "%s\n" "Setting root_sysconfdir to $root_sysconfdir" >&6; } fi # Check whether --with-multiarch was given. if test ${with_multiarch+y} then : withval=$with_multiarch; if test "$withval" = "lib64"; then libdir=/usr/lib64 root_libdir=/lib64 else libdir=$libdir/$withval root_libdir=$root_libdir/$withval fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can link with -static" >&5 printf %s "checking whether we can link with -static... " >&6; } if test ${ac_cv_e2fsprogs_use_static+y} then : printf %s "(cached) " >&6 else $as_nop SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { fflush(stdout); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_e2fsprogs_use_static=yes else $as_nop ac_cv_e2fsprogs_use_static=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$SAVE_LDFLAGS fi case "$host_os" in solaris2.*) ac_cv_e2fsprogs_use_static=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_e2fsprogs_use_static" >&5 printf "%s\n" "$ac_cv_e2fsprogs_use_static" >&6; } if test $ac_cv_e2fsprogs_use_static = yes; then LDFLAGS_STATIC="$LDFLAGS_STATIC -static" fi case "$host_os" in darwin*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using Apple Darwin / GNU libintl workaround" >&5 printf "%s\n" "Using Apple Darwin / GNU libintl workaround" >&6; } printf "%s\n" "#define _INTL_REDIRECT_MACROS 1" >>confdefs.h ;; esac if test "$cross_compiling" = yes ; then DO_TEST_SUITE= else DO_TEST_SUITE=check fi INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib' if test -n "$CPPFLAGS" ; then INCLUDES="$INCLUDES $CPPFLAGS" fi if test "$USE_INCLUDED_LIBINTL" = "yes" ; then INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl' fi if test -n "$WITH_DIET_LIBC" ; then INCLUDES="$INCLUDES -D_REENTRANT" fi case "$host_os" in mingw*) INCLUDES=$INCLUDES' -I$(top_srcdir)/include/mingw' ;; esac if test $cross_compiling = no; then BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H" BUILD_LDFLAGS="$LDFLAGS" fi CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS} CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS} LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} # Check whether --with-udev_rules_dir was given. if test ${with_udev_rules_dir+y} then : withval=$with_udev_rules_dir; else $as_nop with_udev_rules_dir=yes fi if test "x${with_udev_rules_dir}" != "xno" then : if test "x${with_udev_rules_dir}" = "xyes" then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for udev" >&5 printf %s "checking for udev... " >&6; } if test -n "$udev_CFLAGS"; then pkg_cv_udev_CFLAGS="$udev_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5 ($PKG_CONFIG --exists --print-errors "udev") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_udev_CFLAGS=`$PKG_CONFIG --cflags "udev" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$udev_LIBS"; then pkg_cv_udev_LIBS="$udev_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5 ($PKG_CONFIG --exists --print-errors "udev") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_udev_LIBS=`$PKG_CONFIG --libs "udev" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then udev_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "udev" 2>&1` else udev_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "udev" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$udev_PKG_ERRORS" >&5 with_udev_rules_dir="" elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } with_udev_rules_dir="" else udev_CFLAGS=$pkg_cv_udev_CFLAGS udev_LIBS=$pkg_cv_udev_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for udev rules dir" >&5 printf %s "checking for udev rules dir... " >&6; } pkg_udev_rules_dir="${with_udev_rules_dir}" if test -n "${pkg_udev_rules_dir}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${pkg_udev_rules_dir}" >&5 printf "%s\n" "${pkg_udev_rules_dir}" >&6; } have_udev="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } have_udev="no" fi else $as_nop have_udev="disabled" fi # Check whether --with-crond_dir was given. if test ${with_crond_dir+y} then : withval=$with_crond_dir; else $as_nop with_crond_dir=yes fi if test "x${with_crond_dir}" != "xno" then : if test "x${with_crond_dir}" = "xyes" then : if test -d "/etc/cron.d" then : with_crond_dir="/etc/cron.d" else $as_nop have_crond="no"; with_crond_dir="" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for system crontab dir" >&5 printf %s "checking for system crontab dir... " >&6; } crond_dir="${with_crond_dir}" if test -n "${crond_dir}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${crond_dir}" >&5 printf "%s\n" "${crond_dir}" >&6; } have_crond="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } have_crond="no" fi else $as_nop have_crond="disabled" fi # Check whether --with-systemd_unit_dir was given. if test ${with_systemd_unit_dir+y} then : withval=$with_systemd_unit_dir; else $as_nop with_systemd_unit_dir=yes fi if test "x${with_systemd_unit_dir}" != "xno" then : if test "x${with_systemd_unit_dir}" = "xyes" then : pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for systemd" >&5 printf %s "checking for systemd... " >&6; } if test -n "$systemd_CFLAGS"; then pkg_cv_systemd_CFLAGS="$systemd_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5 ($PKG_CONFIG --exists --print-errors "systemd") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_systemd_CFLAGS=`$PKG_CONFIG --cflags "systemd" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$systemd_LIBS"; then pkg_cv_systemd_LIBS="$systemd_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5 ($PKG_CONFIG --exists --print-errors "systemd") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_systemd_LIBS=`$PKG_CONFIG --libs "systemd" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then systemd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "systemd" 2>&1` else systemd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "systemd" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$systemd_PKG_ERRORS" >&5 with_systemd_unit_dir="" elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } with_systemd_unit_dir="" else systemd_CFLAGS=$pkg_cv_systemd_CFLAGS systemd_LIBS=$pkg_cv_systemd_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for systemd system unit dir" >&5 printf %s "checking for systemd system unit dir... " >&6; } systemd_system_unit_dir="${with_systemd_unit_dir}" if test -n "${systemd_system_unit_dir}" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${systemd_system_unit_dir}" >&5 printf "%s\n" "${systemd_system_unit_dir}" >&6; } have_systemd="yes" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } have_systemd="no" fi else $as_nop have_systemd="disabled" fi OS_IO_FILE="" case "$host_os" in mingw*) OS_IO_FILE=windows_io ;; *) OS_IO_FILE=unix_io ;; esac test -d lib || mkdir lib test -d include || mkdir include test -d include/linux || mkdir include/linux test -d include/asm || mkdir include/asm if test -z "$UUID_CMT" ; then uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \ lib/uuid/uuid_types.h" fi if test -z "$BLKID_CMT" ; then blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \ lib/blkid/blkid_types.h" fi for i in MCONFIG Makefile \ util/Makefile util/subst.conf util/gen-tarball util/install-symlink \ lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \ lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \ $uuid_out_list $blkid_out_list lib/support/Makefile \ lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \ misc/Makefile ext2ed/Makefile e2fsck/Makefile \ debugfs/Makefile tests/Makefile tests/progs/Makefile \ tests/fuzz/Makefile resize/Makefile doc/Makefile \ po/Makefile.in scrub/Makefile; do if test -d `dirname ${srcdir}/$i` ; then outlist="$outlist $i" fi done ac_config_files="$ac_config_files $outlist" 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, we kill variables containing newlines. # 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. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} 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}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $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} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; 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 printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent 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 Configuration commands: $config_commands Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. 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=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; 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 || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "lib/config.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/config.h" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "$outlist") CONFIG_FILES="$CONFIG_FILES $outlist" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; 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+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then ac_cs_awk_getline=: ac_cs_awk_pipe_init= ac_cs_awk_read_file=' while ((getline aline < (F[key])) > 0) print(aline) close(F[key])' ac_cs_awk_pipe_fini= else ac_cs_awk_getline=false ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" ac_cs_awk_read_file=' print "|#_!!_#|" print "cat " F[key] " &&" '$ac_cs_awk_pipe_init # The final `:' finishes the AND list. ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' fi ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF # Create commands to substitute file output variables. { echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && echo "_ACAWK" && echo "_ACEOF" } >conf$$files.sh && . ./conf$$files.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 rm -f conf$$files.sh { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" \$ac_cs_awk_pipe_init } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } if (nfields == 3 && !substed) { key = field[2] if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { \$ac_cs_awk_read_file next } } print line } \$ac_cs_awk_pipe_fini _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #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. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # 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. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | if $ac_cs_awk_getline; then $AWK -f "$ac_tmp/subs.awk" else $AWK -f "$ac_tmp/subs.awk" | $SHELL fi \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # 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 || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi e2fsprogs-1.47.3-rc1/configure.ac000066400000000000000000001452711501560632700165100ustar00rootroot00000000000000AC_INIT AC_CONFIG_SRCDIR([version.h]) AC_PREREQ([2.71]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_HEADERS([lib/config.h]) AH_BOTTOM([#include ]) AC_USE_SYSTEM_EXTENSIONS MCONFIG=./MCONFIG AC_SUBST_FILE(MCONFIG) BINARY_TYPE=bin dnl dnl This is to figure out the version number and the date.... dnl E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h` E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h` E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }') MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'` YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'` if expr $YEAR ">" 1900 > /dev/null ; then E2FSPROGS_YEAR=$YEAR elif expr $YEAR ">" 90 >/dev/null ; then E2FSPROGS_YEAR=19$YEAR else E2FSPROGS_YEAR=20$YEAR fi case $MONTH in Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;; Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;; Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;; Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;; May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;; Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;; Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;; Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;; Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;; Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;; Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;; Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;; *) AC_MSG_WARN([Unknown month $MONTH??]) ;; esac base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'` base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'` date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY} case $E2FSPROGS_VERSION in *-WIP|pre-*) E2FSPROGS_PKGVER="$base_ver" E2FSPROGS_PKGREL="WIP.$date_spec" ;; *) E2FSPROGS_PKGVER="$base_ver" E2FSPROGS_PKGREL="$base_rel" ;; esac unset DATE MONTH YEAR base_ver pre_vers date_spec AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION]) AC_MSG_RESULT([Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}]) AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}]) AC_SUBST(E2FSPROGS_YEAR) AC_SUBST(E2FSPROGS_MONTH) AC_SUBST(E2FSPROGS_DAY) AC_SUBST(E2FSPROGS_VERSION) AC_SUBST(E2FSPROGS_PKGREL) AC_SUBST(E2FSPROGS_PKGVER) AC_SUBST(E2FSPROGS_DATE) dnl dnl Use diet libc dnl WITH_DIET_LIBC= AC_ARG_WITH([diet-libc], AS_HELP_STRING([--with-diet-libc],[use diet libc]), CC="diet cc -nostdinc" WITH_DIET_LIBC=yes if test -z "$LIBS" then LIBS="-lcompat" else LIBS="$LIBS -lcompat" fi AC_MSG_RESULT(CC=$CC))dnl dnl AC_CANONICAL_HOST dnl dnl Check to see if libdl exists for the sake of dlopen dnl DLOPEN_LIB='' AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl) AC_SUBST(DLOPEN_LIB) dnl AC_ARG_WITH([cc], AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]), AC_MSG_ERROR([--with-cc no longer supported; use CC= instead])) dnl AC_ARG_WITH([ccopts], AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]), AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead])) dnl AC_ARG_WITH([ldopts], AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]), AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead])) dnl AC_PROG_CC if test "$GCC" = yes; then RDYNAMIC="-rdynamic" AC_SUBST(RDYNAMIC) fi AC_PROG_CPP dnl dnl Alpha computers use fast and imprecise floating point code that may dnl miss exceptions by default. Force sane options if we're using GCC. AC_MSG_CHECKING(for additional special compiler flags) if test "$GCC" = yes then case "$host_cpu" in alpha) addcflags="-mieee" ;; esac fi if test "x$addcflags" != x then AC_MSG_RESULT($addcflags) CFLAGS="$addcflags $CFLAGS" else AC_MSG_RESULT([[(none)]]) fi dnl dnl Set default values for library extensions. Will be dealt with after dnl parsing configuration options, which may modify these dnl LIB_EXT=.a STATIC_LIB_EXT=.a PROFILED_LIB_EXT=.a dnl dnl Allow separate `root_prefix' to be specified dnl AC_ARG_WITH([root-prefix], AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]), root_prefix=$withval, root_prefix=NONE)dnl dnl dnl handle --enable-maintainer-mode dnl AC_ARG_ENABLE([maintainer-mode], AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]), if test "$enableval" = "no" then MAINTAINER_CMT=# AC_MSG_RESULT([Disabling maintainer mode]) else MAINTAINER_CMT= AC_MSG_RESULT([Enabling maintainer mode]) fi , MAINTAINER_CMT=# AC_MSG_RESULT([Disabling maintainer mode by default]) ) AC_SUBST(MAINTAINER_CMT) dnl dnl handle --enable-symlink-install dnl AC_ARG_ENABLE([symlink-install], AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]), if test "$enableval" = "no" then LINK_INSTALL_FLAGS=-f AC_MSG_RESULT([Disabling symlinks for install]) else LINK_INSTALL_FLAGS=-sf AC_MSG_RESULT([Enabling symlinks for install]) fi , LINK_INSTALL_FLAGS=-f AC_MSG_RESULT([Disabling symlinks for install by default]) ) AC_SUBST(LINK_INSTALL_FLAGS) dnl dnl handle --enable-relative-symlinks dnl relative_symlink_defined= AC_ARG_ENABLE([relative-symlinks], AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]), if test "$enableval" = "no" then SYMLINK_RELATIVE= relative_symlink_defined=yes AC_MSG_RESULT([Disabling relative symlinks for install]) else SYMLINK_RELATIVE=--relative relative_symlink_defined=yes AC_MSG_RESULT([Enabling relative symlinks for install]) fi) AC_ARG_ENABLE([symlink-relative-symlinks],, if test "$enableval" = "no" then SYMLINK_RELATIVE=yes AC_MSG_RESULT([Disabling relative symlinks for install]) else SYMLINK_RELATIVE=--relative AC_MSG_RESULT([Enabling relative symlinks for install]) fi , if test -z "$relative_symlink_defined" then SYMLINK_RELATIVE= AC_MSG_RESULT([Disabling relative symlinks for install by default]) fi ) AC_SUBST(SYMLINK_RELATIVE) dnl dnl handle --enable-symlink-build dnl AC_ARG_ENABLE([symlink-build], AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]), if test "$enableval" = "no" then LINK_BUILD_FLAGS= AC_MSG_RESULT([Disabling symlinks for build]) else LINK_BUILD_FLAGS=-s AC_MSG_RESULT([Enabling symlinks for build]) fi , LINK_BUILD_FLAGS= AC_MSG_RESULT([Disabling symlinks for build by default]) ) AC_SUBST(LINK_BUILD_FLAGS) dnl dnl handle --enable-verbose-makecmds dnl AC_ARG_ENABLE([verbose-makecmds], AS_HELP_STRING([--enable-verbose-makecmds],[enable verbose make command output]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling verbose make commands]) E=@echo ES=echo Q=@ else AC_MSG_RESULT([Enabling verbose make commands]) E=@\\# ES=\\# Q= fi , AC_MSG_RESULT([Disabling verbose make commands]) E=@echo ES=echo Q=@ ) AC_SUBST(E) AC_SUBST(ES) AC_SUBST(Q) dnl dnl This needs to be before all of the --enable-*-shlibs options dnl E2_PKG_CONFIG_STATIC=--static LDFLAG_DYNAMIC= PRIVATE_LIBS_CMT= dnl dnl handle --enable-elf-shlibs dnl AC_ARG_ENABLE([elf-shlibs], AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]), if test "$enableval" = "no" then ELF_CMT=# MAKEFILE_ELF=/dev/null AC_MSG_RESULT([Disabling ELF shared libraries]) else E2_PKG_CONFIG_STATIC= ELF_CMT= MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib [case "$host_os" in solaris2.*) MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib ;; esac] BINARY_TYPE=elfbin LIB_EXT=.so PRIVATE_LIBS_CMT=# LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib'] AC_MSG_RESULT([Enabling ELF shared libraries]) fi , MAKEFILE_ELF=/dev/null ELF_CMT=# AC_MSG_RESULT([Disabling ELF shared libraries by default]) ) AC_SUBST(ELF_CMT) AC_SUBST_FILE(MAKEFILE_ELF) dnl dnl handle --enable-bsd-shlibs dnl AC_ARG_ENABLE([bsd-shlibs], AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]), if test "$enableval" = "no" then BSDLIB_CMT=# MAKEFILE_BSDLIB=/dev/null AC_MSG_RESULT([Disabling BSD shared libraries]) else E2_PKG_CONFIG_STATIC= BSDLIB_CMT= MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib LIB_EXT=.so [case "$host_os" in darwin*) MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib LIB_EXT=.dylib ;; esac] AC_MSG_RESULT([Enabling BSD shared libraries]) fi , MAKEFILE_BSDLIB=/dev/null BSDLIB_CMT=# AC_MSG_RESULT([Disabling BSD shared libraries by default]) ) AC_SUBST(BSDLIB_CMT) AC_SUBST_FILE(MAKEFILE_BSDLIB) dnl dnl handle --enable-profile dnl AC_ARG_ENABLE([profile], AS_HELP_STRING([--enable-profile],[build profiling libraries]), if test "$enableval" = "no" then PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null AC_MSG_RESULT([Disabling profiling libraries]) else PROFILE_CMT= MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile PROFILED_LIB_EXT=_p.a AC_MSG_RESULT([Building profiling libraries]) fi , PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null AC_MSG_RESULT([Disabling profiling libraries by default]) ) AC_SUBST(PROFILE_CMT) AC_SUBST_FILE(MAKEFILE_PROFILE) dnl dnl handle --enable-gcov dnl AC_ARG_ENABLE([gcov], AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]), if test "$enableval" = "yes" then CFLAGS="-g -fprofile-arcs -ftest-coverage" LDFLAGS="-fprofile-arcs -ftest-coverage" AC_MSG_RESULT([Enabling gcov support]) fi ) dnl dnl handle --enable-hardening dnl CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}" CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}" LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS} AC_ARG_ENABLE([hardening], AS_HELP_STRING([--enable-hardening],[build with hardening flags such as fortify]), if test "$enableval" = "yes" then HARDEN_CFLAGS="-D_FORTIFY_SOURCE=3 -fstack-protector-strong" HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"] CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE" CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS" CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE" LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie" LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS" LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS" AC_MSG_RESULT([Enabling hardening support]) fi ) dnl dnl Substitute library extensions dnl AC_SUBST(LIB_EXT) AC_SUBST(STATIC_LIB_EXT) AC_SUBST(PROFILED_LIB_EXT) AC_SUBST(LDFLAG_DYNAMIC) AC_SUBST(PRIVATE_LIBS_CMT) dnl dnl handle --enable-jbd-debug dnl AC_ARG_ENABLE([jbd-debug], AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling journal debugging]) else AC_DEFINE(CONFIG_JBD_DEBUG, 1, [Define to 1 if debugging ext3/4 journal code]) AC_MSG_RESULT([Enabling journal debugging]) fi , AC_MSG_RESULT([Disabling journal debugging by default]) ) dnl dnl handle --enable-blkid-debug dnl AC_ARG_ENABLE([blkid-debug], AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling blkid debugging]) else AC_DEFINE(CONFIG_BLKID_DEBUG, 1, [Define to 1 if debugging the blkid library]) AC_MSG_RESULT([Enabling blkid debugging]) fi , AC_MSG_RESULT([Disabling blkid debugging by default]) ) dnl dnl handle --enable-testio-debug dnl AC_ARG_ENABLE([testio-debug], AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]), AH_TEMPLATE([CONFIG_TESTIO_DEBUG], [Define to 1 if the testio I/O manager should be enabled]) if test "$enableval" = "no" then AC_MSG_RESULT([Disabling testio debugging]) TEST_IO_CMT="#" else TEST_IO_CMT= AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) AC_MSG_RESULT([Enabling testio debugging]) fi , AC_MSG_RESULT([Enabling testio debugging by default]) AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) TEST_IO_CMT= ) AC_SUBST(TEST_IO_CMT) dnl dnl handle --enable-developer-features dnl AC_ARG_ENABLE([developer-features], AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]), AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES], [Define to 1 for features for use by ext4 developers]) if test "$enableval" = "yes" then DEV_FEATURES_CMT= AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1) AC_MSG_RESULT([Enabling ext4 developer features]) else AC_MSG_RESULT([Disabling ext4 developer features]) DEV_FEATURES_CMT="#" fi , AC_MSG_RESULT([Disabling ext4 developer features by default]) DEV_FEATURES_CMT= ) AC_SUBST(DEV_FEATURES_CMT) dnl dnl handle --disable-libuuid dnl PKG_PROG_PKG_CONFIG LIBUUID= DEPLIBUUID= STATIC_LIBUUID= DEPSTATIC_LIBUUID= PROFILED_LIBUUID= DEPPROFILED_LIBUUID= UUID_CMT= AC_ARG_ENABLE([libuuid], AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]), if test "$enableval" = "no" then if test -z "$PKG_CONFIG"; then AC_MSG_ERROR([pkg-config not installed; please install it.]) fi AC_CHECK_LIB(uuid, uuid_generate, [LIBUUID=`$PKG_CONFIG --libs uuid`; STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`], [AC_MSG_ERROR([external uuid library not found])]) PROFILED_LIBUUID=$LIBUUID UUID_CMT=# AC_MSG_RESULT([Disabling private uuid library]) else LIBUUID='$(LIB)/libuuid'$LIB_EXT DEPLIBUUID=$LIBUUID STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT DEPSTATIC_LIBUUID=$STATIC_LIBUUID PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT DEPPROFILED_LIBUUID=$PROFILED_LIBUUID AC_MSG_RESULT([Enabling private uuid library]) fi , if test -n "$PKG_CONFIG"; then AC_CHECK_LIB(uuid, uuid_generate, [LIBUUID=`$PKG_CONFIG --libs uuid`; STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`]) fi if test -n "$LIBUUID"; then PROFILED_LIBUUID=$LIBUUID UUID_CMT=# AC_MSG_RESULT([Using system uuid by default]) else LIBUUID='$(LIB)/libuuid'$LIB_EXT DEPLIBUUID=$LIBUUID STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT DEPSTATIC_LIBUUID=$STATIC_LIBUUID PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT DEPPROFILED_LIBUUID=$PROFILED_LIBUUID AC_MSG_RESULT([Enabling private uuid library by default]) fi ) AC_SUBST(LIBUUID) AC_SUBST(DEPLIBUUID) AC_SUBST(STATIC_LIBUUID) AC_SUBST(DEPSTATIC_LIBUUID) AC_SUBST(PROFILED_LIBUUID) AC_SUBST(DEPPROFILED_LIBUUID) AC_SUBST(UUID_CMT) dnl dnl handle --disable-libblkid dnl PKG_PROG_PKG_CONFIG LIBBLKID= DEPLIBBLKID= STATIC_LIBBLKID= DEPSTATIC_LIBBLKID= PROFILED_LIBBLKID= DEPPROFILED_LIBBLKID= BLKID_CMT= AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs]) AC_ARG_ENABLE([libblkid], AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]), if test "$enableval" = "no" then if test -z "$PKG_CONFIG"; then AC_MSG_ERROR([pkg-config not installed; please install it.]) fi AC_CHECK_LIB(blkid, blkid_get_cache, [LIBBLKID=`$PKG_CONFIG --libs blkid`; STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`], [AC_MSG_ERROR([external blkid library not found])], -luuid) BLKID_CMT=# PROFILED_LIBBLKID=$LIBBLKID AC_MSG_RESULT([Disabling private blkid library]) else LIBBLKID='$(LIB)/libblkid'$LIB_EXT DEPLIBBLKID=$LIBBLKID STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID AC_DEFINE(CONFIG_BUILD_FINDFS, 1) AC_MSG_RESULT([Enabling private blkid library]) fi , if test -n "$PKG_CONFIG"; then AC_CHECK_LIB(blkid, blkid_get_cache, [LIBBLKID=`$PKG_CONFIG --libs blkid`; STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`]) fi if test -n "$LIBBLKID"; then BLKID_CMT=# PROFILED_LIBBLKID=$LIBBLKID AC_MSG_RESULT([Using system blkid library by default]) else LIBBLKID='$(LIB)/libblkid'$LIB_EXT DEPLIBBLKID=$LIBBLKID STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID AC_DEFINE(CONFIG_BUILD_FINDFS, 1) AC_MSG_RESULT([Enabling private blkid library by default]) fi ) AC_SUBST(LIBBLKID) AC_SUBST(DEPLIBBLKID) AC_SUBST(STATIC_LIBBLKID) AC_SUBST(DEPSTATIC_LIBBLKID) AC_SUBST(PROFILED_LIBBLKID) AC_SUBST(DEPPROFILED_LIBBLKID) AC_SUBST(BLKID_CMT) dnl dnl handle --enable-subset dnl ALL_CMT= SUBSET_CMT= AC_ARG_ENABLE([subset], AS_HELP_STRING([--enable-subset],[enable subset-only build]), if test "$enableval" = "no" then SUBSET_CMT=# AC_MSG_RESULT([Disabling subset-only build]) else ALL_CMT=# AC_MSG_RESULT([Enabling subset-only-build]) fi ,) AC_SUBST(ALL_CMT) AC_SUBST(SUBSET_CMT) dnl dnl handle --disable-backtrace dnl AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace]) AC_ARG_ENABLE([backtrace], AS_HELP_STRING([--disable-backtrace],[disable use backtrace]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling use of backtrace]) AC_DEFINE(DISABLE_BACKTRACE, 1) else AC_MSG_RESULT([Enabling use of backtrace]) fi , AC_MSG_RESULT([Enabling use of backtrace by default]) ) dnl dnl handle --enable-debugfs dnl AC_ARG_ENABLE([debugfs], AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling debugfs support]) DEBUGFS_CMT="#" else DEBUGFS_CMT= AC_MSG_RESULT([Enabling debugfs support]) fi , AC_MSG_RESULT([Enabling debugfs support by default]) DEBUGFS_CMT= ) AC_SUBST(DEBUGFS_CMT) dnl dnl handle --enable-imager dnl AC_ARG_ENABLE([imager], AS_HELP_STRING([--disable-imager],[disable support of e2image program]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling e2image support]) IMAGER_CMT="#" else IMAGER_CMT= AC_MSG_RESULT([Enabling e2image support]) fi , AC_MSG_RESULT([Enabling e2image support by default]) IMAGER_CMT= ) AC_SUBST(IMAGER_CMT) dnl dnl handle --enable-resizer dnl AC_ARG_ENABLE([resizer], AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling e2resize support]) RESIZER_CMT="#" else RESIZER_CMT= AC_MSG_RESULT([Enabling e2resize support]) fi , AC_MSG_RESULT([Enabling e2resize support by default]) RESIZER_CMT= ) AC_SUBST(RESIZER_CMT) dnl dnl handle --enable-defrag dnl AC_ARG_ENABLE([defrag], AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling e4defrag support]) DEFRAG_CMT="#" else DEFRAG_CMT= AC_MSG_RESULT([Enabling e4defrag support]) fi , if test -z "$WITH_DIET_LIBC" then AC_MSG_RESULT([Enabling e4defrag support by default]) DEFRAG_CMT= else AC_MSG_RESULT([Disabling e4defrag support by default]) DEFRAG_CMT="#" fi ) AC_SUBST(DEFRAG_CMT) dnl dnl See whether to install the `fsck' wrapper program (that calls e2fsck) dnl AC_ARG_ENABLE([fsck], AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]), [if test "$enableval" = "no" then FSCK_PROG='' FSCK_MAN='' AC_MSG_RESULT([Not building fsck wrapper]) else FSCK_PROG=fsck FSCK_MAN=fsck.8 AC_MSG_RESULT([Building fsck wrapper]) fi] , [case "$host_os" in gnu*) FSCK_PROG='' FSCK_MAN='' AC_MSG_RESULT([Not building fsck wrapper by default]) ;; *) FSCK_PROG=fsck FSCK_MAN=fsck.8 AC_MSG_RESULT([Building fsck wrapper by default]) esac] ) AC_SUBST(FSCK_PROG) AC_SUBST(FSCK_MAN) dnl dnl See whether to install the `e2initrd-helper' program dnl AC_ARG_ENABLE([e2initrd-helper], AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]), [if test "$enableval" = "no" then E2INITRD_PROG='' E2INITRD_MAN='' AC_MSG_RESULT([Not building e2initrd helper]) else E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 AC_MSG_RESULT([Building e2initrd helper]) fi] , E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 AC_MSG_RESULT([Building e2initrd helper by default]) ) AC_SUBST(E2INITRD_PROG) AC_SUBST(E2INITRD_MAN) dnl dnl dnl AC_ARG_ENABLE([tls], AS_HELP_STRING([--disable-tls],[disable use of thread local support]), [if test "$enableval" = "no" then try_tls="" AC_MSG_RESULT([Disabling thread local support]) else try_tls="yes" AC_MSG_RESULT([Enabling thread local support]) fi] , if test -n "$WITH_DIET_LIBC" then try_tls="" AC_MSG_RESULT([Diet libc does not support thread local support]) else try_tls="yes" AC_MSG_RESULT([Try using thread local support by default]) fi ) if test "$try_tls" = "yes" then AX_TLS fi dnl dnl dnl AC_ARG_WITH([pthread], AS_HELP_STRING([--without-pthread],[disable use of pthread support]), [if test "$withval" = "no" then try_pthread="" AC_MSG_RESULT([Disabling pthread support]) else try_pthread="yes" AC_MSG_RESULT([Testing for pthread support]) fi] , try_pthread="yes" AC_MSG_RESULT([Try testing for pthread support by default]) ) if test "$try_pthread" = "yes" then AX_PTHREAD else test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" AC_SUBST([PTHREAD_CC]) fi dnl dnl dnl AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd]) AC_ARG_ENABLE([uuidd], AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]), [if test "$enableval" = "no" then AC_MSG_RESULT([Not building uuidd]) UUIDD_CMT="#" else AC_DEFINE(USE_UUIDD, 1) UUIDD_CMT="" AC_MSG_RESULT([Building uuidd]) fi] , AC_DEFINE(USE_UUIDD, 1) if test -z "$UUID_CMT" then UUIDD_CMT="" AC_MSG_RESULT([Building uuidd by default]) else UUIDD_CMT="#" AC_MSG_RESULT([Disabling uuidd by default]) fi ) AC_SUBST(UUIDD_CMT) dnl dnl handle --disable-mmp dnl AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support]) AC_ARG_ENABLE([mmp], AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling mmp support]) else AC_MSG_RESULT([Enabling mmp support]) AC_DEFINE(CONFIG_MMP, 1) fi , AC_MSG_RESULT([Enabling mmp support by default]) AC_DEFINE(CONFIG_MMP, 1) ) dnl dnl handle --disable-tdb dnl AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support]) AC_ARG_ENABLE([tdb], AS_HELP_STRING([--disable-tdb],[disable tdb support]), [ if test "$enableval" = "no" then AC_MSG_RESULT([Disabling tdb support]) CONFIG_TDB=0 else AC_MSG_RESULT([Enabling tdb support]) CONFIG_TDB=1 fi ] , [ case "$host_os" in mingw*) AC_MSG_RESULT([Disabling tdb support by default]) CONFIG_TDB=0 ;; *) AC_MSG_RESULT([Enabling tdb support by default]) CONFIG_TDB=1 ;; esac ] ) if test "$CONFIG_TDB" = "1" then AC_DEFINE(CONFIG_TDB, 1) TDB_CMT="" TDB_MAN_COMMENT="" else TDB_CMT="#" TDB_MAN_COMMENT='.\"' fi AC_SUBST(TDB_CMT) AC_SUBST(TDB_MAN_COMMENT) dnl dnl handle --disable-bmap-stats dnl AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.]) AC_ARG_ENABLE([bmap-stats], AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling bitmap statistics support]) else AC_MSG_RESULT([Enabling bitmap statistics support]) AC_DEFINE(ENABLE_BMAP_STATS, 1) fi , AC_MSG_RESULT([Enabling bitmap statistics support by default]) AC_DEFINE(ENABLE_BMAP_STATS, 1) ) dnl dnl handle --enable-bmap-stats-ops dnl AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.]) AC_ARG_ENABLE([bmap-stats-ops], AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]), if test "$enableval" = "no" then AC_MSG_RESULT([Disabling additional bitmap statistics]) else dnl There has to be a better way! AS_IF([test "x${enable_bmap_stats}" = "xno"], AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats])) AC_MSG_RESULT([Enabling additional bitmap statistics]) AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1) fi , AC_MSG_RESULT([Disabling additional bitmap statistics by default]) ) dnl dnl dnl MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library AC_SUBST_FILE(MAKEFILE_LIBRARY) dnl dnl Add internationalization support, using gettext. dnl GETTEXT_PACKAGE=e2fsprogs PACKAGE=e2fsprogs VERSION="$E2FSPROGS_VERSION" VERSION=0.14.1 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext]) AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(PACKAGE) AC_SUBST(VERSION) AM_GNU_GETTEXT([external]) dnl dnl End of configuration options dnl AC_SUBST(BINARY_TYPE) AC_PROG_MAKE_SET CHECK_GNU_MAKE AC_PATH_PROG(LN, ln, ln) AC_PROG_MKDIR_P dnl dnl @mkdir_p@ is used by po's Makefile.in dnl mkdir_p=$MKDIR_P AC_SUBST(mkdir_p) AC_PROG_LN_S AC_PATH_PROG(MV, mv, mv) AC_PATH_PROG(CP, cp, cp) AC_PATH_PROG(RM, rm, rm) AC_PATH_PROG(CHMOD, chmod, :) AC_PROG_AWK AC_PROG_EGREP AC_PATH_PROG(SED, sed, sed) AC_PATH_PROG(PERL, perl, perl) AC_PATH_PROG(LDCONFIG, ldconfig, :) AC_CHECK_TOOL(AR, ar, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) if test "_$MAKEINFO" = "_"; then MAKEINFO="echo Makeinfo is missing. Info documentation will not be built." else case "$MAKEINFO" in */missing.*) AC_MSG_WARN([ *** Makeinfo is missing. Info documentation will not be built.]) ;; *) ;; esac fi AC_SUBST(MAKEINFO) AC_PROG_INSTALL # See if we need a separate native compiler. if test $cross_compiling = no; then BUILD_CC="$CC" AC_SUBST(BUILD_CC) else AC_CHECK_PROGS(BUILD_CC, gcc cc) fi AC_CHECK_HEADERS(m4_flatten([ dirent.h errno.h execinfo.h getopt.h malloc.h mntent.h paths.h pthread.h semaphore.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h termio.h unistd.h utime.h attr/xattr.h linux/falloc.h linux/fd.h linux/fsmap.h linux/fsverity.h linux/major.h linux/loop.h linux/types.h net/if_dl.h netinet/in.h sys/acl.h sys/disklabel.h sys/disk.h sys/file.h sys/ioctl.h sys/key.h sys/mkdev.h sys/mman.h sys/mount.h sys/prctl.h sys/random.h sys/resource.h sys/select.h sys/socket.h sys/sockio.h sys/stat.h sys/syscall.h sys/sysmacros.h sys/time.h sys/types.h sys/un.h sys/wait.h sys/xattr.h ])) case "$host_os" in mingw*) # The above checks only detect system headers, not the headers in # ./include/mingw/, so explicitly define them to be available. AC_DEFINE(HAVE_LINUX_TYPES_H, 1) AC_DEFINE(HAVE_SYS_STAT_H, 1) AC_DEFINE(HAVE_SYS_SYSMACROS_H, 1) AC_DEFINE(HAVE_SYS_TYPES_H, 1) AC_DEFINE(HAVE_UNISTD_H, 1) ;; esac dnl Check where to find a dd(1) that supports iflag=fullblock dnl and oflag=append AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock]) DD= for i in dd gdd ; do if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then DD=$i break fi done if test -n "$DD" ; then AC_MSG_RESULT([$DD]) else AC_MSG_RESULT([not found, using dd]) DD=dd AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.]) fi AC_SUBST([DD]) AC_CHECK_HEADERS(net/if.h,,, [[ #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_SOCKET #include #endif ]]) AC_FUNC_VPRINTF dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen dnl is not declared. AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1, [Define to 1 if dirent has d_reclen])],, [#include ]) AC_CHECK_MEMBERS([struct stat.st_atim]) dnl Check to see if ssize_t was declared AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1, [Define to 1 if ssize_t declared])],, [#include ]) dnl dnl Check to see if llseek() is declared in unistd.h. On some libc's dnl it is, and on others it isn't..... Thank you glibc developers.... dnl AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1, [Define to 1 if llseek declared in unistd.h])],, [#include ]) dnl dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files dnl are so convoluted that I can't tell whether it will always be defined, dnl and if it isn't defined while lseek64 is defined in the library, dnl disaster will strike. dnl dnl Warning! Use of --enable-gcc-wall may throw off this test. dnl dnl AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1, [Define to 1 if lseek64 declared in unistd.h])],, [#define _LARGEFILE_SOURCE #define _LARGEFILE64_SOURCE #include ]) dnl The Android NDK has , but it is missing the inline functions dnl fsmap_sizeof() and fsmap_advance(). Check whether this is the case. AC_CHECK_DECL(fsmap_sizeof,[AC_DEFINE(HAVE_FSMAP_SIZEOF, 1, [Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h])],, [#include ]) dnl dnl Word sizes... dnl AC_SYS_LARGEFILE AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF(off_t) AC_CHECK_SIZEOF(time_t) AC_CHECK_SIZEOF(void *) SIZEOF_SHORT=$ac_cv_sizeof_short SIZEOF_INT=$ac_cv_sizeof_int SIZEOF_LONG=$ac_cv_sizeof_long SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long SIZEOF_OFF_T=$ac_cv_sizeof_off_t SIZEOF_TIME_T=$ac_cv_sizeof_time_t AC_SUBST(SIZEOF_SHORT) AC_SUBST(SIZEOF_INT) AC_SUBST(SIZEOF_LONG) AC_SUBST(SIZEOF_LONG_LONG) AC_SUBST(SIZEOF_OFF_T) AC_SUBST(SIZEOF_TIME_T) AC_C_BIGENDIAN if test $cross_compiling = no; then BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh else CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh fi ASM_TYPES_HEADER=./asm_types.h AC_SUBST_FILE(ASM_TYPES_HEADER) dnl dnl Save the configuration #defines needed for the public ext2fs.h dnl header file dnl echo "/* These defines are needed for the public ext2fs.h header file */" \ > public_config.h if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef HAVE_SYS_TYPES_H" >> public_config.h fi if grep SIZEOF_TIME_T confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef SIZEOF_TIME_T" >> public_config.h fi if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then uniq tmp_config.$$ >> public_config.h else echo "#undef WORDS_BIGENDIAN" >> public_config.h fi rm -f tmp_config.$$ PUBLIC_CONFIG_HEADER=./public_config.h AC_SUBST_FILE(PUBLIC_CONFIG_HEADER) dnl dnl See if we have inttypes.h and if intptr_t is defined dnl AC_CHECK_HEADERS([inttypes.h]) AC_CHECK_TYPES(intptr_t) dnl dnl See if struct stat has a st_flags field, in which case we can get file dnl flags somewhat portably. Also check for the analogous setter, chflags(). dnl AC_MSG_CHECKING(whether struct stat has a st_flags field) AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct stat stat; stat.st_flags = 0;]])],[e2fsprogs_cv_struct_st_flags=yes],[e2fsprogs_cv_struct_st_flags=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags) if test "$e2fsprogs_cv_struct_st_flags" = yes; then AC_MSG_CHECKING(whether st_flags field is useful) AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct stat stat; stat.st_flags |= UF_IMMUTABLE;]])],[e2fsprogs_cv_struct_st_flags_immut=yes],[e2fsprogs_cv_struct_st_flags_immut=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut) if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then AC_DEFINE(HAVE_STAT_FLAGS, 1, [Define to 1 if struct stat has st_flags]) fi fi dnl dnl Check for the presence of SA_LEN dnl AC_CHECK_MEMBER(struct sockaddr.sa_len, AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1, [Define to 1 if if struct sockaddr contains sa_len]),, [#include #include ]) dnl dnl If we are using the system-provided blkid library, check for dnl the functions added after migrating that library to util-linux dnl if test -n "$BLKID_CMT"; then AC_CHECK_LIB(blkid, blkid_probe_get_topology, AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1, [Define to 1 if blkid has blkid_probe_get_topology])) AC_CHECK_LIB(blkid, blkid_topology_get_dax, AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1, [Define to 1 if blkid has blkid_topology_get_dax])) AC_CHECK_LIB(blkid, blkid_probe_enable_partitions, AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1, [Define to 1 if blkid has blkid_probe_enable_partitions])) fi dnl if test -n "$DLOPEN_LIB" ; then ac_cv_func_dlopen=yes fi AC_CHECK_FUNCS(m4_flatten([ __secure_getenv add_key backtrace chflags dlopen fadvise64 fallocate fallocate64 fchown fcntl fdatasync fstat64 fsync ftruncate64 futimes getcwd getdtablesize getentropy gethostname getmntinfo getpwuid_r getrandom getrlimit getrusage jrand48 keyctl llistxattr llseek lseek64 mallinfo mallinfo2 mbstowcs memalign mempcpy mmap msync nanosleep open64 pathconf posix_fadvise posix_fadvise64 posix_memalign prctl pread pwrite pread64 pwrite64 qsort_r secure_getenv setmntent setresgid setresuid snprintf srandom stpcpy strcasecmp strdup strnlen strptime strtoull sync_file_range sysconf usleep utime utimes valloc ])) dnl dnl Check to see if -lsocket is required (solaris) to make something dnl that uses socket() to compile; this is needed for the UUID library dnl SOCKET_LIB='' AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket]) AC_SUBST(SOCKET_LIB) dnl dnl See if libmagic exists dnl AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic AC_CHECK_HEADERS([magic.h])]) if test "$ac_cv_func_dlopen" = yes ; then MAGIC_LIB=$DLOPEN_LIB fi AC_SUBST(MAGIC_LIB) dnl dnl libarchive dnl AC_ARG_WITH([libarchive], AS_HELP_STRING([--without-libarchive],[disable use of libarchive]), [if test "$withval" = "no" then try_libarchive="" AC_MSG_RESULT([Disabling libarchive support]) AC_DEFINE(CONFIG_DISABLE_LIBARCHIVE, 1, [Define to 1 to completely disable libarchive]) elif test "$withval" = "direct" then try_libarchive="direct" AC_MSG_RESULT([Testing for libarchive support (forced direct link)]) else try_libarchive="yes" AC_MSG_RESULT([Testing for libarchive support (with dlopen)]) fi] , try_libarchive="yes" AC_MSG_RESULT([Try testing for libarchive support (with dlopen) by default]) ) ARCHIVE_LIB= if test -n "$try_libarchive" then AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive AC_CHECK_HEADERS([archive.h])]) if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then ARCHIVE_LIB=$DLOPEN_LIB AC_DEFINE(CONFIG_DLOPEN_LIBARCHIVE, 1, [Define to 1 if using dlopen to access libarchive]) fi if test "$ac_cv_header_archive_h" != "yes" then ARCHIVE_LIB= fi fi AC_SUBST(ARCHIVE_LIB) dnl dnl Check to see if librt is required for clock_gettime() (glibc < 2.17) dnl AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt]) AC_SUBST(CLOCK_GETTIME_LIB) dnl dnl Check to see if the FUSE library is -lfuse3, -losxfuse, or -lfuse dnl FUSE_CMT= FUSE_LIB= dnl osxfuse.dylib supersedes fuselib.dylib AC_ARG_ENABLE([fuse2fs], AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]), if test "$enableval" = "no" then FUSE_CMT="#" AC_MSG_RESULT([Disabling fuse2fs]) else AC_PREPROC_IFELSE( [AC_LANG_PROGRAM([[#ifdef __linux__ #include #include #include #endif ]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])]) PKG_CHECK_MODULES([fuse3], [fuse3], [ FUSE_LIB=-lfuse3 ], [ AC_CHECK_HEADERS([pthread.h fuse.h], [], [AC_MSG_FAILURE([Cannot find fuse2fs headers.])], [#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29]) AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse], [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [AC_MSG_FAILURE([Cannot find fuse library.])])]) ]) AC_MSG_RESULT([Enabling fuse2fs]) fi , PKG_CHECK_MODULES([fuse3], [fuse3], [ FUSE_LIB=-lfuse3 ], [ AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"], [#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 29 #ifdef __linux__ # include # include # include #endif]) if test -z "$FUSE_CMT" then AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse], [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])]) fi ]) if test -z "$FUSE_CMT" then AC_MSG_RESULT([Enabling fuse2fs by default.]) fi ) AC_SUBST(FUSE_LIB) AC_SUBST(FUSE_CMT) if test "$FUSE_LIB" = "-lfuse3" then FUSE_USE_VERSION=35 CFLAGS="$CFLAGS $fuse3_CFLAGS" LDFLAGS="$LDFLAGS $fuse3_LDFLAGS" AC_CHECK_HEADERS([pthread.h fuse.h], [], [AC_MSG_FAILURE([Cannot find fuse3 fuse2fs headers.])], [#define _FILE_OFFSET_BITS 64 #define FUSE_USE_VERSION 35 #ifdef __linux__ #include #include #include #endif]) elif test -n "$FUSE_LIB" then FUSE_USE_VERSION=29 fi if test -n "$FUSE_USE_VERSION" then AC_DEFINE_UNQUOTED(FUSE_USE_VERSION, $FUSE_USE_VERSION, [Define to the version of FUSE to use]) fi dnl dnl See if optreset exists dnl AC_MSG_CHECKING(for optreset) AC_CACHE_VAL(ac_cv_have_optreset, [AC_EGREP_HEADER(optreset, unistd.h, ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl AC_MSG_RESULT($ac_cv_have_optreset) if test $ac_cv_have_optreset = yes; then AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present]) fi dnl dnl Test for sem_init, and which library it might require: dnl AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists]) SEM_INIT_LIB='' echo GL_THREADS_API: ${gl_threads_api} if test "${gl_threads_api}" != none then AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(pthread, sem_init, AC_DEFINE(HAVE_SEM_INIT, 1) SEM_INIT_LIB=-lpthread, AC_CHECK_LIB(rt, sem_init, AC_DEFINE(HAVE_SEM_INIT, 1) SEM_INIT_LIB=-lrt, AC_CHECK_LIB(posix4, sem_init, AC_DEFINE(HAVE_SEM_INIT, 1) SEM_INIT_LIB=-lposix4))))dnl fi AC_SUBST(SEM_INIT_LIB) dnl dnl qsort_r detection dnl AS_IF([test "$ac_cv_func_qsort_r" != no], [ AC_CACHE_CHECK(whether qsort_r is GNU version, e2_cv_gnu_qsort_r, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@include void (qsort_r)(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *arg); ]], [[ ]])],[e2_cv_gnu_qsort_r=yes],[e2_cv_gnu_qsort_r=no]) ]) AC_CACHE_CHECK(whether qsort_r is BSD version, e2_cv_bsd_qsort_r, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@include void (qsort_r)(void *base, size_t nmemb, size_t size, void *arg, int (*compar)(void *, const void *, const void *)); ]], [[ ]])],[e2_cv_bsd_qsort_r=yes],[e2_cv_bsd_qsort_r=no]) ]) AS_CASE("$e2_cv_gnu_qsort_r:$e2_cv_bsd_qsort_r", [yes:no], [ AC_DEFINE(HAVE_GNU_QSORT_R, 1, [ Define to 1 if you have the GNU-style 'qsort_r' function.]) ], [no:yes], [ AC_DEFINE(HAVE_BSD_QSORT_R, 1, [ Define to 1 if you have the BSD-style 'qsort_r' function.]) ]) ]) dnl dnl Check for unified diff dnl AC_MSG_CHECKING(for unified diff option) if diff -u $0 $0 > /dev/null 2>&1 ; then UNI_DIFF_OPTS=-u else UNI_DIFF_OPTS=-c fi AC_MSG_RESULT($UNI_DIFF_OPTS) AC_SUBST(UNI_DIFF_OPTS) dnl dnl We use the EXT2 ioctls only under Linux dnl case "$host_os" in linux*) AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present]) ;; esac dnl dnl Check the available mount options dnl AX_CHECK_MOUNT_OPT(nosuid) AX_CHECK_MOUNT_OPT(nodev) dnl Enable LTO for all packages dnl AC_ARG_ENABLE([lto], AS_HELP_STRING([--enable-lto],[enable link time optimization]),, enable_lto=no) if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then AC_MSG_CHECKING([if C compiler supports LTO]) OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" LTO_FLAGS="-g -flto -ffat-lto-objects" CFLAGS="$CFLAGS $LTO_FLAGS" LDFLAGS="$LDFLAGS $LTO_FLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])] [lto_cflags=$LTO_FLAGS] [lto_ldflags=$LTO_FLAGS] [AC_PATH_PROG(gcc_ar, gcc-ar,,)] [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)], [AC_MSG_RESULT([no])]) if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then have_lto=yes AR="${gcc_ar}" RANLIB="${gcc_ranlib}" fi CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" AC_SUBST(have_lto) AC_SUBST(lto_cflags) AC_SUBST(lto_ldflags) fi if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then AC_MSG_ERROR([LTO not supported by compiler.]) fi dnl dnl Enable UBSAN for all packages dnl AC_ARG_ENABLE([ubsan], AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),, enable_ubsan=no) if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then AC_MSG_CHECKING([if C compiler supports UBSAN]) OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" UBSAN_FLAGS="-fsanitize=undefined" CFLAGS="$CFLAGS $UBSAN_FLAGS" LDFLAGS="$LDFLAGS $UBSAN_FLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])] [ubsan_cflags=$UBSAN_FLAGS] [ubsan_ldflags=$UBSAN_FLAGS] [have_ubsan=yes], [AC_MSG_RESULT([no])]) CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" AC_SUBST(have_ubsan) AC_SUBST(ubsan_cflags) AC_SUBST(ubsan_ldflags) fi if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then AC_MSG_ERROR([UBSAN not supported by compiler.]) fi dnl dnl Enable ADDRSAN for all packages dnl AC_ARG_ENABLE([addrsan], AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),, enable_addrsan=no) if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then AC_MSG_CHECKING([if C compiler supports ADDRSAN]) OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" ADDRSAN_FLAGS="-fsanitize=address" CFLAGS="$CFLAGS $ADDRSAN_FLAGS" LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])] [addrsan_cflags=$ADDRSAN_FLAGS] [addrsan_ldflags=$ADDRSAN_FLAGS] [have_addrsan=yes], [AC_MSG_RESULT([no])]) CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" AC_SUBST(have_addrsan) AC_SUBST(addrsan_cflags) AC_SUBST(addrsan_ldflags) fi if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then AC_MSG_ERROR([ADDRSAN not supported by compiler.]) fi dnl dnl Enable THREADSAN for all packages dnl AC_ARG_ENABLE([threadsan], AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),, enable_threadsan=no) if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then AC_MSG_CHECKING([if C compiler supports THREADSAN]) OLD_CFLAGS="$CFLAGS" OLD_LDFLAGS="$LDFLAGS" THREADSAN_FLAGS="-fsanitize=thread" CFLAGS="$CFLAGS $THREADSAN_FLAGS" LDFLAGS="$LDFLAGS $THREADSAN_FLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])] [threadsan_cflags=$THREADSAN_FLAGS] [threadsan_ldflags=$THREADSAN_FLAGS] [have_threadsan=yes], [AC_MSG_RESULT([no])]) CFLAGS="${OLD_CFLAGS}" LDFLAGS="${OLD_LDFLAGS}" AC_SUBST(have_threadsan) AC_SUBST(threadsan_cflags) AC_SUBST(threadsan_ldflags) fi if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then AC_MSG_ERROR([THREADSAN not supported by compiler.]) fi if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.]) fi dnl dnl Enable the fuzzer sanitizer for all packages dnl FUZZING_CMT="#" AC_ARG_ENABLE([fuzzing], AS_HELP_STRING([--enable-fuzzing],[enable fuzzing sanitizer]),, enable_fuzzing=no) if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then AC_PROG_CXX AC_MSG_CHECKING([if C compiler supports fuzzing sanitizer]) AC_LANG_PUSH([C++]) OLD_CXXFLAGS="$CXXFLAGS" OLD_LDFLAGS="$LDFLAGS" FUZZER_FLAGS="-fsanitize=fuzzer" CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS" LDFLAGS="$LDFLAGS $FUZZER_FLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [ return 0; ])], [AC_MSG_RESULT([yes])] [fuzzer_cflags=$FUZZER_FLAGS] [fuzzer_ldflags=$FUZZER_FLAGS] [FUZZING_CMT=] [have_fuzzer=yes], [AC_MSG_RESULT([no])] [AC_MSG_ERROR([fuzzing requested but not available])]) CXXFLAGS="${OLD_CXXFLAGS}" LDFLAGS="${OLD_LDFLAGS}" AC_LANG_POP([C++]) AC_SUBST(have_fuzzer) AC_SUBST(fuzzer_cflags) AC_SUBST(fuzzer_ldflags) fi AC_SUBST(FUZZING_CMT) dnl dnl OS-specific uncomment control dnl LINUX_CMT="#" CYGWIN_CMT="#" UNIX_CMT= case "$host_os" in linux*) LINUX_CMT= ;; cygwin) CYGWIN_CMT= UNIX_CMT="#" ;; esac AC_SUBST(LINUX_CMT) AC_SUBST(CYGWIN_CMT) AC_SUBST(UNIX_CMT) dnl dnl e2scrub only builds on linux dnl E2SCRUB_CMT="$LINUX_CMT" AC_SUBST(E2SCRUB_CMT) dnl dnl Linux and Hurd places root files in the / by default dnl case "$host_os" in linux* | gnu* | k*bsd*-gnu) if test "$prefix" = NONE -a "$root_prefix" = NONE ; then root_prefix=""; AC_MSG_RESULT([On $host_os systems, root_prefix defaults to '']) fi ;; esac dnl dnl On Linux/hurd, force the prefix to be /usr dnl case "$host_os" in linux* | gnu* | k*bsd*-gnu) if test "$prefix" = NONE ; then prefix="/usr"; AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr]) if test "$mandir" = '${prefix}/man' ; then AC_MSG_RESULT([...and mandir defaults to /usr/share/man]) mandir=/usr/share/man fi fi ;; esac if test "$root_prefix" = NONE ; then if test "$prefix" = NONE ; then root_prefix="$ac_default_prefix" else root_prefix="$prefix" fi root_bindir=$bindir root_sbindir=$sbindir root_libdir=$libdir root_sysconfdir=$sysconfdir else root_bindir='${root_prefix}/bin' root_sbindir='${root_prefix}/sbin' root_libdir='${root_prefix}/lib' root_sysconfdir='${root_prefix}/etc' fi if test "$bindir" != '${exec_prefix}/bin'; then root_bindir=$bindir AC_MSG_RESULT([Setting root_bindir to $root_bindir]) fi if test "$sbindir" != '${exec_prefix}/sbin'; then root_sbindir=$sbindir AC_MSG_RESULT([Setting root_sbindir to $root_sbindir]) fi if test "$libdir" != '${exec_prefix}/lib'; then root_libdir=$libdir AC_MSG_RESULT([Setting root_libdir to $root_libdir]) fi if test "$sysconfdir" != '${prefix}/etc'; then root_sysconfdir=$sysconfdir AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir]) fi AC_SUBST(root_prefix) AC_SUBST(root_bindir) AC_SUBST(root_sbindir) AC_SUBST(root_libdir) AC_SUBST(root_sysconfdir) dnl dnl Allow specification of the multiarch arch dnl AC_ARG_WITH([multiarch], AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]), if test "$withval" = "lib64"; then libdir=/usr/lib64 root_libdir=/lib64 else libdir=$libdir/$withval root_libdir=$root_libdir/$withval fi ) dnl dnl dnl See if -static works. This could fail if the linker does not dnl support -static, or if required external libraries are not available dnl in static form. dnl AC_MSG_CHECKING([whether we can link with -static]) AC_CACHE_VAL(ac_cv_e2fsprogs_use_static, [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[fflush(stdout);]])],[ac_cv_e2fsprogs_use_static=yes],[ac_cv_e2fsprogs_use_static=no]) LDFLAGS=$SAVE_LDFLAGS]) dnl dnl Regardless of how the test turns out, Solaris doesn't handle -static dnl This is caused by the socket library requiring the nsl library, which dnl requires the -dl library, which only works for dynamically linked dnl programs. It basically means you can't have statically linked programs dnl which use the network under Solaris. dnl case "$host_os" in solaris2.*) ac_cv_e2fsprogs_use_static=no ;; esac AC_MSG_RESULT($ac_cv_e2fsprogs_use_static) if test $ac_cv_e2fsprogs_use_static = yes; then LDFLAGS_STATIC="$LDFLAGS_STATIC -static" fi AC_SUBST(LDFLAGS_STATIC) dnl dnl Work around mysterious Darwin / GNU libintl problem dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like dnl Apple hacked gcc somehow?) dnl case "$host_os" in darwin*) AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround]) AC_DEFINE(_INTL_REDIRECT_MACROS, 1, [Define to 1 if Apple Darwin libintl workaround is needed]) ;; esac dnl dnl Only try to run the test suite if we're not cross compiling. dnl if test "$cross_compiling" = yes ; then DO_TEST_SUITE= else DO_TEST_SUITE=check fi AC_SUBST(DO_TEST_SUITE) dnl dnl Only include the intl include files if we're building with them dnl INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib' if test -n "$CPPFLAGS" ; then INCLUDES="$INCLUDES $CPPFLAGS" fi if test "$USE_INCLUDED_LIBINTL" = "yes" ; then INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl' fi if test -n "$WITH_DIET_LIBC" ; then INCLUDES="$INCLUDES -D_REENTRANT" fi case "$host_os" in mingw*) INCLUDES=$INCLUDES' -I$(top_srcdir)/include/mingw' ;; esac AC_SUBST(INCLUDES) dnl dnl Build CFLAGS dnl if test $cross_compiling = no; then BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H" BUILD_LDFLAGS="$LDFLAGS" fi AC_SUBST(BUILD_CFLAGS) AC_SUBST(BUILD_LDFLAGS) dnl dnl Define CFLAGS and LDFLAGS for shared libraries dnl CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS} CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS} LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS} AC_SUBST(CFLAGS_SHLIB) AC_SUBST(CFLAGS_STLIB) AC_SUBST(LDFLAGS_SHLIB) dnl dnl Where do udev rules go? dnl AC_ARG_WITH([udev_rules_dir], [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@], [Install udev rules into DIR.])], [], [with_udev_rules_dir=yes]) AS_IF([test "x${with_udev_rules_dir}" != "xno"], [ AS_IF([test "x${with_udev_rules_dir}" = "xyes"], [ PKG_CHECK_MODULES([udev], [udev], [ with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d" ], [ with_udev_rules_dir="" ]) ]) AC_MSG_CHECKING([for udev rules dir]) pkg_udev_rules_dir="${with_udev_rules_dir}" AS_IF([test -n "${pkg_udev_rules_dir}"], [ AC_MSG_RESULT(${pkg_udev_rules_dir}) have_udev="yes" ], [ AC_MSG_RESULT(no) have_udev="no" ]) ], [ have_udev="disabled" ]) AC_SUBST(have_udev) AC_SUBST(pkg_udev_rules_dir) dnl dnl Where do cron jobs go? dnl AC_ARG_WITH([crond_dir], [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@], [Install system crontabs into DIR.])], [], [with_crond_dir=yes]) AS_IF([test "x${with_crond_dir}" != "xno"], [ AS_IF([test "x${with_crond_dir}" = "xyes"], [ AS_IF([test -d "/etc/cron.d"], [with_crond_dir="/etc/cron.d"], [have_crond="no"; with_crond_dir=""]) ]) AC_MSG_CHECKING([for system crontab dir]) crond_dir="${with_crond_dir}" AS_IF([test -n "${crond_dir}"], [ AC_MSG_RESULT(${crond_dir}) have_crond="yes" ], [ AC_MSG_RESULT(no) have_crond="no" ]) ], [ have_crond="disabled" ]) AC_SUBST(have_crond) AC_SUBST(crond_dir) dnl dnl Where do systemd services go? dnl AC_ARG_WITH([systemd_unit_dir], [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@], [Install systemd system units into DIR.])], [], [with_systemd_unit_dir=yes]) AS_IF([test "x${with_systemd_unit_dir}" != "xno"], [ AS_IF([test "x${with_systemd_unit_dir}" = "xyes"], [ PKG_CHECK_MODULES([systemd], [systemd], [ with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)" ], [ with_systemd_unit_dir="" ]) m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$]) ]) AC_MSG_CHECKING([for systemd system unit dir]) systemd_system_unit_dir="${with_systemd_unit_dir}" AS_IF([test -n "${systemd_system_unit_dir}"], [ AC_MSG_RESULT(${systemd_system_unit_dir}) have_systemd="yes" ], [ AC_MSG_RESULT(no) have_systemd="no" ]) ], [ have_systemd="disabled" ]) AC_SUBST(have_systemd) AC_SUBST(systemd_system_unit_dir) dnl Adjust the compiled files if we are on windows vs everywhere else dnl OS_IO_FILE="" [case "$host_os" in mingw*) OS_IO_FILE=windows_io ;; *) OS_IO_FILE=unix_io ;; esac] AC_SUBST(OS_IO_FILE) dnl dnl Make our output files, being sure that we create the some miscellaneous dnl directories dnl test -d lib || mkdir lib test -d include || mkdir include test -d include/linux || mkdir include/linux test -d include/asm || mkdir include/asm if test -z "$UUID_CMT" ; then uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \ lib/uuid/uuid_types.h" fi if test -z "$BLKID_CMT" ; then blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \ lib/blkid/blkid_types.h" fi for i in MCONFIG Makefile \ util/Makefile util/subst.conf util/gen-tarball util/install-symlink \ lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \ lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \ $uuid_out_list $blkid_out_list lib/support/Makefile \ lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \ misc/Makefile ext2ed/Makefile e2fsck/Makefile \ debugfs/Makefile tests/Makefile tests/progs/Makefile \ tests/fuzz/Makefile resize/Makefile doc/Makefile \ po/Makefile.in scrub/Makefile; do if test -d `dirname ${srcdir}/$i` ; then outlist="$outlist $i" fi done AC_CONFIG_FILES([$outlist]) AC_OUTPUT if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi e2fsprogs-1.47.3-rc1/contrib/000077500000000000000000000000001501560632700156505ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/contrib/Android.bp000066400000000000000000000014071501560632700175550ustar00rootroot00000000000000// Copyright 2017 The Android Open Source Project package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "external_e2fsprogs_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 // SPDX-license-identifier-GPL default_applicable_licenses: ["external_e2fsprogs_license"], } subdirs = ["android"] //######################################################################## // Build add_ext4_encrypt cc_binary { name: "add_ext4_encrypt", host_supported: true, defaults: ["e2fsprogs-defaults"], srcs: ["add_ext4_encrypt.c"], shared_libs: [ "libext2fs", "libext2_com_err", ], } e2fsprogs-1.47.3-rc1/contrib/add_ext4_encrypt.c000066400000000000000000000025421501560632700212570ustar00rootroot00000000000000/* * Basic program to add ext4 encryption to a file system * * Copyright 2015, Google, Inc. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */ #include #include #include #include #include #include #include #include #include int main (int argc, char *argv[]) { errcode_t retval = 0; ext2_filsys fs; setbuf(stdout, NULL); setbuf(stderr, NULL); initialize_ext2_error_table(); if (argc != 2) { fprintf(stderr, "%s: Usage \n", argv[0]); exit(1); } retval = ext2fs_open(argv[1], EXT2_FLAG_RW, 0, 0, unix_io_manager, &fs); if (retval) { com_err(argv[0], retval, "while trying to open '%s'", argv[1]); exit(1); } if (!ext2fs_has_feature_encrypt(fs->super)) { ext2fs_set_feature_encrypt(fs->super); fs->super->s_encrypt_algos[0] = EXT4_ENCRYPTION_MODE_AES_256_XTS; fs->super->s_encrypt_algos[1] = EXT4_ENCRYPTION_MODE_AES_256_CTS; ext2fs_mark_super_dirty(fs); printf("Ext4 encryption enabled on %s\n", argv[1]); } else printf("Ext4 encryption already enabled on %s\n", argv[1]); retval = ext2fs_close(fs); if (retval) { com_err(argv[0], retval, "while trying to close '%s'", argv[1]); exit(1); } return (0); } e2fsprogs-1.47.3-rc1/contrib/android/000077500000000000000000000000001501560632700172705ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/contrib/android/Android.bp000066400000000000000000000036051501560632700211770ustar00rootroot00000000000000// Copyright 2017 The Android Open Source Project //########################################################################## // Build e2fsdroid package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "external_e2fsprogs_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["external_e2fsprogs_license"], } cc_binary { name: "e2fsdroid", host_supported: true, recovery_available: true, vendor_available: true, defaults: ["e2fsprogs-defaults"], srcs: [ "e2fsdroid.c", "block_range.c", "fsmap.c", "block_list.c", "base_fs.c", "perms.c", "basefs_allocator.c", ], target: { host: { static_libs: [ "libext2_com_err", "libext2_misc", "libext2fs", "libsparse", "libz", "libcutils", "libbase", "libselinux", "libcrypto", "liblog", ], }, android: { static_libs: [ "libbase", ], shared_libs: [ "libext2fs", "libext2_com_err", "libext2_misc", "libcutils", "liblog", "libselinux", "libcrypto", ], }, }, stl: "libc++_static", } //########################################################################## // Build ext2simg cc_binary { name: "ext2simg", host_supported: true, defaults: ["e2fsprogs-defaults"], srcs: ["ext2simg.c"], shared_libs: [ "libext2fs", "libext2_com_err", "libsparse", "libz", ], } e2fsprogs-1.47.3-rc1/contrib/android/base_fs.c000066400000000000000000000105101501560632700210330ustar00rootroot00000000000000#include "base_fs.h" #include #define BASE_FS_VERSION "Base EXT4 version 1.0" struct base_fs { FILE *file; const char *mountpoint; struct basefs_entry entry; }; static FILE *basefs_open(const char *file) { char *line = NULL; size_t len; FILE *f = fopen(file, "r"); if (!f) return NULL; if (getline(&line, &len, f) == -1 || !line) goto err_getline; if (strncmp(line, BASE_FS_VERSION, strlen(BASE_FS_VERSION))) goto err_header; free(line); return f; err_header: free(line); err_getline: fclose(f); return NULL; } static struct basefs_entry *basefs_readline(FILE *f, const char *mountpoint, int *err) { char *line = NULL, *saveptr1, *saveptr2, *block_range, *block; int offset; size_t len; struct basefs_entry *entry = NULL; blk64_t range_start, range_end; if (getline(&line, &len, f) == -1) { if (feof(f)) goto end; goto err_getline; } entry = calloc(1, sizeof(*entry)); if (!entry) goto err_alloc; /* * With BASEFS version 1.0, a typical line looks like this: * /bin/mke2fs 5000-5004,8000,9000-9990 */ if (sscanf(line, "%ms%n", &entry->path, &offset) != 1) goto err_sscanf; len = strlen(mountpoint); memmove(entry->path, entry->path + len, strlen(entry->path) - len + 1); while (line[offset] == ' ') ++offset; block_range = strtok_r(line + offset, ",\n", &saveptr1); while (block_range) { block = strtok_r(block_range, "-", &saveptr2); if (!block) break; range_start = atoll(block); block = strtok_r(NULL, "-", &saveptr2); range_end = block ? atoll(block) : range_start; add_blocks_to_range(&entry->blocks, range_start, range_end); block_range = strtok_r(NULL, ",\n", &saveptr1); } end: *err = 0; free(line); return entry; err_sscanf: free(entry); err_alloc: free(line); err_getline: *err = 1; return NULL; } static void free_base_fs_entry(void *e) { struct basefs_entry *entry = e; if (entry) { free(entry->path); free(entry); } } struct ext2fs_hashmap *basefs_parse(const char *file, const char *mountpoint) { int err; struct ext2fs_hashmap *entries = NULL; struct basefs_entry *entry; FILE *f = basefs_open(file); if (!f) return NULL; entries = ext2fs_hashmap_create(ext2fs_djb2_hash, free_base_fs_entry, 1024); if (!entries) goto end; while ((entry = basefs_readline(f, mountpoint, &err))) { err = ext2fs_hashmap_add(entries, entry, entry->path, strlen(entry->path)); if (err) { free_base_fs_entry(entry); fclose(f); ext2fs_hashmap_free(entries); return NULL; } } if (err) { fclose(f); ext2fs_hashmap_free(entries); return NULL; } end: fclose(f); return entries; } static void *init(const char *file, const char *mountpoint) { struct base_fs *params = malloc(sizeof(*params)); if (!params) return NULL; params->mountpoint = mountpoint; params->file = fopen(file, "w+"); if (!params->file) { free(params); return NULL; } if (fwrite(BASE_FS_VERSION"\n", 1, strlen(BASE_FS_VERSION"\n"), params->file) != strlen(BASE_FS_VERSION"\n")) { fclose(params->file); free(params); return NULL; } return params; } static int start_new_file(char *path, ext2_ino_t ino EXT2FS_ATTR((unused)), struct ext2_inode *inode, void *data) { struct base_fs *params = data; params->entry.path = LINUX_S_ISREG(inode->i_mode) ? path : NULL; return 0; } static int add_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t blocknr, int metadata, void *data) { struct base_fs *params = data; if (params->entry.path && !metadata) add_blocks_to_range(¶ms->entry.blocks, blocknr, blocknr); return 0; } static int inline_data(void *inline_data EXT2FS_ATTR((unused)), void *data EXT2FS_ATTR((unused))) { return 0; } static int end_new_file(void *data) { struct base_fs *params = data; if (!params->entry.path) return 0; if (fprintf(params->file, "%s%s ", params->mountpoint, params->entry.path) < 0 || write_block_ranges(params->file, params->entry.blocks.head, ",") || fwrite("\n", 1, 1, params->file) != 1) return -1; delete_block_ranges(¶ms->entry.blocks); return 0; } static int cleanup(void *data) { struct base_fs *params = data; fclose(params->file); free(params); return 0; } struct fsmap_format base_fs_format = { .init = init, .start_new_file = start_new_file, .add_block = add_block, .inline_data = inline_data, .end_new_file = end_new_file, .cleanup = cleanup, }; e2fsprogs-1.47.3-rc1/contrib/android/base_fs.h000066400000000000000000000005071501560632700210450ustar00rootroot00000000000000#ifndef BASE_FS_H # define BASE_FS_H # include "fsmap.h" # include "hashmap.h" # include "block_range.h" struct basefs_entry { char *path; struct block_range_list blocks; }; extern struct fsmap_format base_fs_format; struct ext2fs_hashmap *basefs_parse(const char *file, const char *mountpoint); #endif /* !BASE_FS_H */ e2fsprogs-1.47.3-rc1/contrib/android/basefs_allocator.c000066400000000000000000000270551501560632700227500ustar00rootroot00000000000000#include #include #include #include "basefs_allocator.h" #include "block_range.h" #include "hashmap.h" #include "base_fs.h" struct base_fs_allocator { struct ext2fs_hashmap *entries; struct basefs_entry *cur_entry; /* The next expected logical block to allocate for cur_entry. */ blk64_t next_lblk; /* Blocks which are definitely owned by a single inode in BaseFS. */ ext2fs_block_bitmap exclusive_block_map; /* Blocks which are available to the first inode that requests it. */ ext2fs_block_bitmap dedup_block_map; }; static errcode_t basefs_block_allocator(ext2_filsys, blk64_t, blk64_t *, struct blk_alloc_ctx *ctx); /* * Free any reserved, but unconsumed block ranges in the allocator. This both * frees the block_range_list data structure and unreserves exclusive blocks * from the block map. */ static void fs_free_blocks_range(ext2_filsys fs, struct base_fs_allocator *allocator, struct block_range_list *list) { ext2fs_block_bitmap exclusive_map = allocator->exclusive_block_map; blk64_t block; while (list->head) { block = consume_next_block(list); if (ext2fs_test_block_bitmap2(exclusive_map, block)) { ext2fs_unmark_block_bitmap2(fs->block_map, block); ext2fs_unmark_block_bitmap2(exclusive_map, block); } } } /* * Free any blocks in the bitmap that were reserved but never used. This is * needed to free dedup_block_map and ensure the free block bitmap is * internally consistent. */ static void fs_free_blocks_bitmap(ext2_filsys fs, ext2fs_block_bitmap bitmap) { blk64_t block = 0; blk64_t start = fs->super->s_first_data_block; blk64_t end = ext2fs_blocks_count(fs->super) - 1; errcode_t retval; for (;;) { retval = ext2fs_find_first_set_block_bitmap2(bitmap, start, end, &block); if (retval) break; ext2fs_unmark_block_bitmap2(fs->block_map, block); start = block + 1; } } static void basefs_allocator_free(ext2_filsys fs, struct base_fs_allocator *allocator) { struct basefs_entry *e; struct ext2fs_hashmap_entry *it = NULL; struct ext2fs_hashmap *entries = allocator->entries; if (entries) { while ((e = ext2fs_hashmap_iter_in_order(entries, &it))) { fs_free_blocks_range(fs, allocator, &e->blocks); delete_block_ranges(&e->blocks); } ext2fs_hashmap_free(entries); } fs_free_blocks_bitmap(fs, allocator->dedup_block_map); ext2fs_free_block_bitmap(allocator->exclusive_block_map); ext2fs_free_block_bitmap(allocator->dedup_block_map); free(allocator); } /* * Build a bitmap of which blocks are definitely owned by exactly one file in * Base FS. Blocks which are not valid or are de-duplicated are skipped. This * is called during allocator initialization, to ensure that libext2fs does * not allocate which we want to re-use. * * If a block was allocated in the initial filesystem, it can never be re-used, * so it will appear in neither the exclusive or dedup set. If a block is used * by multiple files, it will be removed from the owned set and instead added * to the dedup set. * * The dedup set is not removed from fs->block_map. This allows us to re-use * dedup blocks separately and not have them be allocated outside of file data. * * This function returns non-zero if the block was owned, and 0 otherwise. */ static int fs_reserve_block(ext2_filsys fs, struct base_fs_allocator *allocator, blk64_t block) { ext2fs_block_bitmap exclusive_map = allocator->exclusive_block_map; ext2fs_block_bitmap dedup_map = allocator->dedup_block_map; if (block >= ext2fs_blocks_count(fs->super)) return 0; if (ext2fs_test_block_bitmap2(fs->block_map, block)) { if (!ext2fs_test_block_bitmap2(exclusive_map, block)) return 0; ext2fs_unmark_block_bitmap2(exclusive_map, block); ext2fs_mark_block_bitmap2(dedup_map, block); return 0; } else { ext2fs_mark_block_bitmap2(fs->block_map, block); ext2fs_mark_block_bitmap2(exclusive_map, block); return 1; } } /* * Walk the requested block list and reserve blocks, either into the owned * pool or the dedup pool as appropriate. We stop once the file has enough * owned blocks to satisfy |file_size|. This allows any extra blocks to be * re-used, since otherwise a large block movement between files could * trigger block allocation errors. */ static void fs_reserve_blocks_range(ext2_filsys fs, struct base_fs_allocator *allocator, struct block_range_list *list, off_t file_size) { blk64_t block; off_t blocks_needed; off_t blocks_acquired = 0; struct block_range *blocks = list->head; blocks_needed = file_size + (fs->blocksize - 1); blocks_needed /= fs->blocksize; while (blocks) { for (block = blocks->start; block <= blocks->end; block++) { if (fs_reserve_block(fs, allocator, block)) blocks_acquired++; if (blocks_acquired >= blocks_needed) return; } blocks = blocks->next; } } /* * For each file in the base FS map, ensure that its blocks are reserved in * the actual block map. This prevents libext2fs from allocating them for * general purpose use, and ensures that if the file needs data blocks, they * can be re-acquired exclusively for that file. * * If a file in the base map is missing, or not a regular file in the new * filesystem, then it's skipped to ensure that its blocks are reusable. */ static errcode_t fs_reserve_blocks(ext2_filsys fs, struct base_fs_allocator *allocator, const char *src_dir) { int nbytes; char full_path[PATH_MAX]; const char *sep = "/"; struct stat st; struct basefs_entry *e; struct ext2fs_hashmap_entry *it = NULL; struct ext2fs_hashmap *entries = allocator->entries; if (strlen(src_dir) && src_dir[strlen(src_dir) - 1] == '/') sep = ""; while ((e = ext2fs_hashmap_iter_in_order(entries, &it))) { nbytes = snprintf(full_path, sizeof(full_path), "%s%s%s", src_dir, sep, e->path); if (nbytes >= sizeof(full_path)) return ENAMETOOLONG; if (lstat(full_path, &st) || !S_ISREG(st.st_mode)) continue; fs_reserve_blocks_range(fs, allocator, &e->blocks, st.st_size); } return 0; } errcode_t base_fs_alloc_load(ext2_filsys fs, const char *file, const char *mountpoint, const char *src_dir) { errcode_t retval = 0; struct base_fs_allocator *allocator; allocator = calloc(1, sizeof(*allocator)); if (!allocator) { retval = ENOMEM; goto out; } retval = ext2fs_read_bitmaps(fs); if (retval) goto err_load; allocator->cur_entry = NULL; allocator->entries = basefs_parse(file, mountpoint); if (!allocator->entries) { retval = EIO; goto err_load; } retval = ext2fs_allocate_block_bitmap(fs, "exclusive map", &allocator->exclusive_block_map); if (retval) goto err_load; retval = ext2fs_allocate_block_bitmap(fs, "dedup map", &allocator->dedup_block_map); if (retval) goto err_load; retval = fs_reserve_blocks(fs, allocator, src_dir); if (retval) goto err_load; /* Override the default allocator */ fs->get_alloc_block2 = basefs_block_allocator; fs->priv_data = allocator; goto out; err_load: basefs_allocator_free(fs, allocator); out: return retval; } /* Try and acquire the next usable block from the Base FS map. */ static errcode_t get_next_block(ext2_filsys fs, struct base_fs_allocator *allocator, struct block_range_list* list, blk64_t *ret) { blk64_t block; ext2fs_block_bitmap exclusive_map = allocator->exclusive_block_map; ext2fs_block_bitmap dedup_map = allocator->dedup_block_map; if (!list->head) return EXT2_ET_BLOCK_ALLOC_FAIL; block = consume_next_block(list); if (block >= ext2fs_blocks_count(fs->super)) return EXT2_ET_BLOCK_ALLOC_FAIL; if (ext2fs_test_block_bitmap2(exclusive_map, block)) { ext2fs_unmark_block_bitmap2(exclusive_map, block); *ret = block; return 0; } if (ext2fs_test_block_bitmap2(dedup_map, block)) { ext2fs_unmark_block_bitmap2(dedup_map, block); *ret = block; return 0; } return EXT2_ET_BLOCK_ALLOC_FAIL; } /* * BaseFS lists blocks in logical block order. However, the allocator hook is * only called if a block needs to be allocated. In the case of a deduplicated * block, or a hole, the hook is not invoked. This means the next block * allocation request will be out of sequence. For example, consider if BaseFS * specifies the following (0 being a hole): * 1 2 3 0 4 5 * * If the new file has a hole at logical block 0, we could accidentally * shift the entire expected block list as follows: * 0 1 2 0 3 4 * * To account for this, we track the next expected logical block in the * allocator. If the current request is for a later logical block, we skip and * free the intermediate physical blocks that would have been allocated. This * ensures the original block assignment is respected. */ static void skip_blocks(ext2_filsys fs, struct base_fs_allocator *allocator, struct blk_alloc_ctx *ctx) { blk64_t block; struct block_range_list *list = &allocator->cur_entry->blocks; ext2fs_block_bitmap exclusive_map = allocator->exclusive_block_map; while (list->head && allocator->next_lblk < ctx->lblk) { block = consume_next_block(list); if (block >= ext2fs_blocks_count(fs->super)) continue; if (ext2fs_test_block_bitmap2(exclusive_map, block)) { ext2fs_unmark_block_bitmap2(exclusive_map, block); ext2fs_unmark_block_bitmap2(fs->block_map, block); } allocator->next_lblk++; } } static errcode_t basefs_block_allocator(ext2_filsys fs, blk64_t goal, blk64_t *ret, struct blk_alloc_ctx *ctx) { errcode_t retval; struct base_fs_allocator *allocator = fs->priv_data; struct basefs_entry *e = allocator->cur_entry; ext2fs_block_bitmap dedup_map = allocator->dedup_block_map; if (e && ctx && (ctx->flags & BLOCK_ALLOC_DATA)) { if (allocator->next_lblk < ctx->lblk) skip_blocks(fs, allocator, ctx); allocator->next_lblk = ctx->lblk + 1; if (!get_next_block(fs, allocator, &e->blocks, ret)) return 0; } retval = ext2fs_new_block2(fs, goal, fs->block_map, ret); if (!retval) { ext2fs_mark_block_bitmap2(fs->block_map, *ret); return 0; } if (retval != EXT2_ET_BLOCK_ALLOC_FAIL) return retval; /* Try to steal a block from the dedup pool. */ retval = ext2fs_find_first_set_block_bitmap2(dedup_map, fs->super->s_first_data_block, ext2fs_blocks_count(fs->super) - 1, ret); if (!retval) { ext2fs_unmark_block_bitmap2(dedup_map, *ret); return 0; } /* * As a last resort, take any block from our file's list. This * risks bloating the diff, but means we are more likely to * successfully build an image. */ while (e->blocks.head) { if (!get_next_block(fs, allocator, &e->blocks, ret)) return 0; } return EXT2_ET_BLOCK_ALLOC_FAIL; } void base_fs_alloc_cleanup(ext2_filsys fs) { basefs_allocator_free(fs, fs->priv_data); fs->priv_data = NULL; fs->get_alloc_block2 = NULL; } errcode_t base_fs_alloc_set_target(ext2_filsys fs, const char *target_path, const char *name EXT2FS_ATTR((unused)), ext2_ino_t parent_ino EXT2FS_ATTR((unused)), ext2_ino_t root EXT2FS_ATTR((unused)), mode_t mode) { struct base_fs_allocator *allocator = fs->priv_data; if (mode != S_IFREG) return 0; if (allocator) { allocator->cur_entry = ext2fs_hashmap_lookup(allocator->entries, target_path, strlen(target_path)); allocator->next_lblk = 0; } return 0; } errcode_t base_fs_alloc_unset_target(ext2_filsys fs, const char *target_path EXT2FS_ATTR((unused)), const char *name EXT2FS_ATTR((unused)), ext2_ino_t parent_ino EXT2FS_ATTR((unused)), ext2_ino_t root EXT2FS_ATTR((unused)), mode_t mode) { struct base_fs_allocator *allocator = fs->priv_data; if (!allocator || !allocator->cur_entry || mode != S_IFREG) return 0; fs_free_blocks_range(fs, allocator, &allocator->cur_entry->blocks); delete_block_ranges(&allocator->cur_entry->blocks); return 0; } e2fsprogs-1.47.3-rc1/contrib/android/basefs_allocator.h000066400000000000000000000011331501560632700227420ustar00rootroot00000000000000#ifndef BASE_FS_ALLOCATOR_H # define BASE_FS_ALLOCATOR_H # include # include errcode_t base_fs_alloc_load(ext2_filsys fs, const char *file, const char *mountpoint, const char *src_dir); void base_fs_alloc_cleanup(ext2_filsys fs); errcode_t base_fs_alloc_set_target(ext2_filsys fs, const char *target_path, const char *name, ext2_ino_t parent_ino, ext2_ino_t root, mode_t mode); errcode_t base_fs_alloc_unset_target(ext2_filsys fs, const char *target_path, const char *name, ext2_ino_t parent_ino, ext2_ino_t root, mode_t mode); #endif /* !BASE_FS_ALLOCATOR_H */ e2fsprogs-1.47.3-rc1/contrib/android/block_list.c000066400000000000000000000035351501560632700215670ustar00rootroot00000000000000#include "block_list.h" #include "block_range.h" #include #include #include #include struct block_list { FILE *f; const char *mountpoint; const char *filename; struct block_range_list blocks; }; static void *init(const char *file, const char *mountpoint) { struct block_list *params = calloc(1, sizeof(*params)); if (!params) return NULL; params->mountpoint = mountpoint; params->f = fopen(file, "w+"); if (!params->f) { free(params); return NULL; } return params; } static int start_new_file(char *path, ext2_ino_t ino EXT2FS_ATTR((unused)), struct ext2_inode *inode EXT2FS_ATTR((unused)), void *data) { struct block_list *params = data; params->filename = LINUX_S_ISREG(inode->i_mode) ? path : NULL; return 0; } static int add_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t blocknr, int metadata, void *data) { struct block_list *params = data; if (params->filename && !metadata) add_blocks_to_range(¶ms->blocks, blocknr, blocknr); return 0; } static int inline_data(void *inline_data EXT2FS_ATTR((unused)), void *data EXT2FS_ATTR((unused))) { return 0; } static int end_new_file(void *data) { struct block_list *params = data; if (!params->filename || !params->blocks.head) return 0; if (fprintf(params->f, "%s%s ", params->mountpoint, params->filename) < 0 || write_block_ranges(params->f, params->blocks.head, " ") || fwrite("\n", 1, 1, params->f) != 1) return -1; delete_block_ranges(¶ms->blocks); return 0; } static int cleanup(void *data) { struct block_list *params = data; fclose(params->f); free(params); return 0; } struct fsmap_format block_list_format = { .init = init, .start_new_file = start_new_file, .add_block = add_block, .inline_data = inline_data, .end_new_file = end_new_file, .cleanup = cleanup, }; e2fsprogs-1.47.3-rc1/contrib/android/block_list.h000066400000000000000000000002131501560632700215620ustar00rootroot00000000000000#ifndef BLOCK_LIST_H # define BLOCK_LIST_H # include "fsmap.h" extern struct fsmap_format block_list_format; #endif /* !BLOCK_LIST_H */ e2fsprogs-1.47.3-rc1/contrib/android/block_range.c000066400000000000000000000032501501560632700217020ustar00rootroot00000000000000#define _GNU_SOURCE #include "block_range.h" #include struct block_range *new_block_range(blk64_t start, blk64_t end) { struct block_range *range = malloc(sizeof(*range)); range->start = start; range->end = end; range->next = NULL; return range; } void add_blocks_to_range(struct block_range_list *list, blk64_t blk_start, blk64_t blk_end) { if (list->head == NULL) list->head = list->tail = new_block_range(blk_start, blk_end); else if (list->tail->end + 1 == blk_start) list->tail->end += (blk_end - blk_start + 1); else { struct block_range *range = new_block_range(blk_start, blk_end); list->tail->next = range; list->tail = range; } } static void remove_head(struct block_range_list *list) { struct block_range *next_range = list->head->next; free(list->head); if (next_range == NULL) list->head = list->tail = NULL; else list->head = next_range; } void delete_block_ranges(struct block_range_list *list) { while (list->head) remove_head(list); } int write_block_ranges(FILE *f, struct block_range *range, char *sep) { int len; char *buf; while (range) { if (range->start == range->end) len = asprintf(&buf, "%llu%s", range->start, sep); else len = asprintf(&buf, "%llu-%llu%s", range->start, range->end, sep); if (fwrite(buf, 1, len, f) != (size_t)len) { free(buf); return -1; } free(buf); range = range->next; } len = strlen(sep); if (fseek(f, -len, SEEK_CUR) == -len) return -1; return 0; } blk64_t consume_next_block(struct block_range_list *list) { blk64_t ret = list->head->start; list->head->start += 1; if (list->head->start > list->head->end) remove_head(list); return ret; } e2fsprogs-1.47.3-rc1/contrib/android/block_range.h000066400000000000000000000012411501560632700217050ustar00rootroot00000000000000#ifndef BLOCK_RANGE_H # define BLOCK_RANGE_H # include # include struct block_range { blk64_t start; blk64_t end; struct block_range *next; }; struct block_range_list { struct block_range *head; struct block_range *tail; }; void add_blocks_to_range(struct block_range_list *list, blk64_t blk_start, blk64_t blk_end); void delete_block_ranges(struct block_range_list *list); int write_block_ranges(FILE *f, struct block_range *range, char *sep); /* * Given a non-empty range list, return the next block and remove it from the * list. */ blk64_t consume_next_block(struct block_range_list *list); #endif /* !BLOCK_RANGE_H */ e2fsprogs-1.47.3-rc1/contrib/android/e2fsdroid.c000066400000000000000000000232771501560632700213300ustar00rootroot00000000000000#define _GNU_SOURCE #include "config.h" #include #include #include #include #include #include "perms.h" #include "base_fs.h" #include "block_list.h" #include "basefs_allocator.h" #include "create_inode.h" #ifndef UID_GID_MAP_MAX_EXTENTS /* * The value is defined in linux/user_namspace.h. * The value is (arbitrarily) 5 in 4.14 and earlier, or 340 in 4.15 and later. * Here, the bigger value is taken. See also man user_namespace(7). */ #define UID_GID_MAP_MAX_EXTENTS 340 #endif // disable leak detection, breaks host asan build const char *__asan_default_options() { return "detect_leaks=0"; } static char *prog_name = "e2fsdroid"; static char *in_file; static char *block_list; static char *basefs_out; static char *basefs_in; static char *mountpoint = ""; static time_t fixed_time = -1; static char *fs_config_file; static struct selinux_opt seopt_file[8]; static int max_nr_opt = (int)sizeof(seopt_file) / sizeof(seopt_file[0]); static char *product_out; static char *src_dir; static int android_configure; static int android_sparse_file = 1; static void usage(int ret) { fprintf(stderr, "%s [-B block_list] [-D basefs_out] [-T timestamp]\n" "\t[-C fs_config] [-S file_contexts] [-p product_out]\n" "\t[-a mountpoint] [-d basefs_in] [-f src_dir] [-e] [-s]\n" "\t[-u uid-mapping] [-g gid-mapping] image\n", prog_name); exit(ret); } static char *absolute_path(const char *file) { char *ret; char cwd[PATH_MAX]; if (file[0] != '/') { if (getcwd(cwd, PATH_MAX) == NULL) { fprintf(stderr, "Failed to getcwd\n"); exit(EXIT_FAILURE); } ret = malloc(strlen(cwd) + 1 + strlen(file) + 1); if (ret) sprintf(ret, "%s/%s", cwd, file); } else ret = strdup(file); return ret; } static int parse_ugid_map_entry(char* line, struct ugid_map_entry* result) { char *token, *token_saveptr; size_t num_tokens; unsigned int *parsed[] = {&result->child_id, &result->parent_id, &result->length}; for (token = strtok_r(line, " ", &token_saveptr), num_tokens = 0; token && num_tokens < 3; token = strtok_r(NULL, " ", &token_saveptr), ++num_tokens) { char* endptr = NULL; unsigned long t = strtoul(token, &endptr, 10); if ((t == ULONG_MAX && errno) || (t > UINT_MAX) || *endptr) { fprintf(stderr, "Malformed u/gid mapping line\n"); return 0; } *parsed[num_tokens] = (unsigned int) t; } if (num_tokens < 3 || strtok_r(NULL, " ", &token_saveptr) != NULL) { fprintf(stderr, "Malformed u/gid mapping line\n"); return 0; } if (result->child_id + result->length < result->child_id || result->parent_id + result->length < result->parent_id) { fprintf(stderr, "u/gid mapping overflow\n"); return 0; } return 1; } /* * Returns 1 if [begin1, begin1+length1) and [begin2, begin2+length2) have * overlapping range. Otherwise 0. */ static int is_overlapping(unsigned int begin1, unsigned int length1, unsigned int begin2, unsigned int length2) { unsigned int end1 = begin1 + length1; unsigned int end2 = begin2 + length2; return !(end1 <= begin2 || end2 <= begin1); } /* * Verifies if the given mapping works. * - Checks if the number of entries is less than or equals to * UID_GID_MAP_MAX_EXTENTS. * - Checks if there is no overlapped ranges. * Returns 1 if valid, otherwise 0. */ static int is_valid_ugid_map(const struct ugid_map* mapping) { size_t i, j; if (mapping->size > UID_GID_MAP_MAX_EXTENTS) { fprintf(stderr, "too many u/gid mapping entries\n"); return 0; } for (i = 0; i < mapping->size; ++i) { const struct ugid_map_entry *entry1 = &mapping->entries[i]; for (j = i + 1; j < mapping->size; ++j) { const struct ugid_map_entry *entry2 = &mapping->entries[j]; if (is_overlapping(entry1->child_id, entry1->length, entry2->child_id, entry2->length)) { fprintf(stderr, "Overlapping child u/gid: [%d %d %d]," " [%d %d %d]\n", entry1->child_id, entry1->parent_id, entry1->length, entry2->child_id, entry2->parent_id, entry2->length); return 0; } if (is_overlapping(entry1->parent_id, entry1->length, entry2->parent_id, entry2->length)) { fprintf(stderr, "Overlapping parent u/gid: [%d %d %d]," " [%d %d %d]\n", entry1->child_id, entry1->parent_id, entry1->length, entry2->child_id, entry2->parent_id, entry2->length); return 0; } } } return 1; } /* * Parses the UID/GID mapping argument. The argument could be a multi-line * string (separated by '\n', no trailing '\n' is allowed). Each line must * contain exact three integer tokens; the first token is |child_id|, * the second is |parent_id|, and the last is |length| of the mapping range. * See also user_namespace(7) man page. * On success, the parsed entries are stored in |result|, and it returns 1. * Otherwise, returns 0. */ static int parse_ugid_map(char* arg, struct ugid_map* result) { int i; char *line, *line_saveptr; size_t current_index; /* Count the number of lines. */ result->size = 1; for (i = 0; arg[i]; ++i) { if (arg[i] == '\n') ++result->size; } /* Allocate memory for entries. */ result->entries = malloc(sizeof(struct ugid_map_entry) * result->size); if (!result->entries) { result->size = 0; return 0; } /* Parse each line */ for (line = strtok_r(arg, "\n", &line_saveptr), current_index = 0; line; line = strtok_r(NULL, "\n", &line_saveptr), ++current_index) { if (!parse_ugid_map_entry( line, &result->entries[current_index])) { return 0; } } return is_valid_ugid_map(result); } int main(int argc, char *argv[]) { int c; char *p; int flags = EXT2_FLAG_RW; errcode_t retval; io_manager io_mgr; ext2_filsys fs = NULL; struct fs_ops_callbacks fs_callbacks = { NULL, NULL }; char *token; int nr_opt = 0; ext2_ino_t inodes_count; ext2_ino_t free_inodes_count; blk64_t blocks_count; blk64_t free_blocks_count; struct ugid_map uid_map = { 0, NULL }, gid_map = { 0, NULL }; add_error_table(&et_ext2_error_table); while ((c = getopt (argc, argv, "T:C:S:p:a:D:d:B:f:esu:g:")) != EOF) { switch (c) { case 'T': fixed_time = strtoul(optarg, &p, 0); android_configure = 1; break; case 'C': fs_config_file = absolute_path(optarg); android_configure = 1; break; case 'S': token = strtok(optarg, ","); while (token) { if (nr_opt == max_nr_opt) { fprintf(stderr, "Expected at most %d selinux opts\n", max_nr_opt); exit(EXIT_FAILURE); } seopt_file[nr_opt].type = SELABEL_OPT_PATH; seopt_file[nr_opt].value = absolute_path(token); nr_opt++; token = strtok(NULL, ","); } android_configure = 1; break; case 'p': product_out = absolute_path(optarg); android_configure = 1; break; case 'a': mountpoint = strdup(optarg); break; case 'D': basefs_out = absolute_path(optarg); break; case 'd': basefs_in = absolute_path(optarg); break; case 'B': block_list = absolute_path(optarg); break; case 'f': src_dir = absolute_path(optarg); break; case 'e': android_sparse_file = 0; break; case 's': flags |= EXT2_FLAG_SHARE_DUP; break; case 'u': if (!parse_ugid_map(optarg, &uid_map)) exit(EXIT_FAILURE); android_configure = 1; break; case 'g': if (!parse_ugid_map(optarg, &gid_map)) exit(EXIT_FAILURE); android_configure = 1; break; default: usage(EXIT_FAILURE); } } if (optind >= argc) { fprintf(stderr, "Expected filename after options\n"); exit(EXIT_FAILURE); } if (android_sparse_file) { io_mgr = sparse_io_manager; if (asprintf(&in_file, "(%s)", argv[optind]) == -1) { fprintf(stderr, "Failed to allocate file name\n"); exit(EXIT_FAILURE); } } else { io_mgr = unix_io_manager; in_file = strdup(argv[optind]); } retval = ext2fs_open(in_file, flags, 0, 0, io_mgr, &fs); if (retval) { com_err(prog_name, retval, "while opening file %s\n", in_file); return retval; } if (src_dir) { ext2fs_read_bitmaps(fs); if (basefs_in) { retval = base_fs_alloc_load(fs, basefs_in, mountpoint, src_dir); if (retval) { com_err(prog_name, retval, "%s", "while reading base_fs file"); exit(1); } fs_callbacks.create_new_inode = base_fs_alloc_set_target; fs_callbacks.end_create_new_inode = base_fs_alloc_unset_target; } retval = populate_fs2(fs, EXT2_ROOT_INO, src_dir, EXT2_ROOT_INO, &fs_callbacks); if (retval) { com_err(prog_name, retval, "%s", "while populating file system"); exit(1); } if (basefs_in) base_fs_alloc_cleanup(fs); } if (android_configure) { retval = android_configure_fs( fs, src_dir, product_out, mountpoint, seopt_file, nr_opt, fs_config_file, fixed_time, &uid_map, &gid_map); if (retval) { com_err(prog_name, retval, "%s", "while configuring the file system"); exit(1); } } if (block_list) { retval = fsmap_iter_filsys(fs, &block_list_format, block_list, mountpoint); if (retval) { com_err(prog_name, retval, "%s", "while creating the block_list"); exit(1); } } if (basefs_out) { retval = fsmap_iter_filsys(fs, &base_fs_format, basefs_out, mountpoint); if (retval) { com_err(prog_name, retval, "%s", "while creating the basefs file"); exit(1); } } inodes_count = fs->super->s_inodes_count; free_inodes_count = fs->super->s_free_inodes_count; blocks_count = ext2fs_blocks_count(fs->super); free_blocks_count = ext2fs_free_blocks_count(fs->super); retval = ext2fs_close_free(&fs); if (retval) { com_err(prog_name, retval, "%s", "while writing superblocks"); exit(1); } printf("Created filesystem with %u/%u inodes and %llu/%llu blocks\n", inodes_count - free_inodes_count, inodes_count, blocks_count - free_blocks_count, blocks_count); remove_error_table(&et_ext2_error_table); return 0; } e2fsprogs-1.47.3-rc1/contrib/android/ext2simg.c000066400000000000000000000144661501560632700212110ustar00rootroot00000000000000/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include struct { bool crc; bool sparse; bool gzip; char *in_file; char *out_file; bool overwrite_input; } params = { .sparse = true, }; #define ext2fs_fatal(Retval, Format, ...) \ do { \ com_err("error", Retval, Format, __VA_ARGS__); \ exit(EXIT_FAILURE); \ } while(0) #define sparse_fatal(Format) \ do { \ fprintf(stderr, "sparse: "Format); \ exit(EXIT_FAILURE); \ } while(0) static void usage(char *path) { char *progname = basename(path); fprintf(stderr, "%s [ options ] \n" " -c include CRC block\n" " -z gzip output\n" " -S don't use sparse output format\n", progname); } static struct buf_item { struct buf_item *next; void *buf[]; } *buf_list; /* * Add @num_blks blocks, starting at index @chunk_start, of the filesystem @fs * to the sparse file @s. */ static void add_chunk(ext2_filsys fs, struct sparse_file *s, blk_t chunk_start, int num_blks) { uint64_t len = (uint64_t)num_blks * fs->blocksize; int64_t offset = (int64_t)chunk_start * fs->blocksize; struct buf_item *bi; int retval; if (!params.overwrite_input) { if (sparse_file_add_file(s, params.in_file, offset, len, chunk_start) < 0) sparse_fatal("adding data to the sparse file"); return; } /* The input file will be overwritten, so make a copy of the blocks. */ if (len > SIZE_MAX - sizeof(*bi)) sparse_fatal("filesystem is too large"); bi = calloc(1, sizeof(*bi) + len); if (!bi) sparse_fatal("out of memory"); bi->next = buf_list; buf_list = bi; retval = io_channel_read_blk64(fs->io, chunk_start, num_blks, bi->buf); if (retval) ext2fs_fatal(retval, "reading data from %s", params.in_file); if (sparse_file_add_data(s, bi->buf, len, chunk_start) < 0) sparse_fatal("adding data to the sparse file"); } static void free_chunks(void) { struct buf_item *bi; while (buf_list) { bi = buf_list->next; free(buf_list); buf_list = bi; } } static blk_t fs_blocks_count(ext2_filsys fs) { blk64_t blks = ext2fs_blocks_count(fs->super); /* libsparse assumes 32-bit block numbers. */ if ((blk_t)blks != blks) sparse_fatal("filesystem is too large"); return blks; } static struct sparse_file *ext_to_sparse(const char *in_file) { errcode_t retval; ext2_filsys fs; struct sparse_file *s; int64_t chunk_start = -1; blk_t fs_blks, cur_blk; retval = ext2fs_open(in_file, 0, 0, 0, unix_io_manager, &fs); if (retval) ext2fs_fatal(retval, "while reading %s", in_file); retval = ext2fs_read_block_bitmap(fs); if (retval) ext2fs_fatal(retval, "while reading block bitmap of %s", in_file); fs_blks = fs_blocks_count(fs); s = sparse_file_new(fs->blocksize, (uint64_t)fs_blks * fs->blocksize); if (!s) sparse_fatal("creating sparse file"); /* * The sparse format encodes the size of a chunk (and its header) in a * 32-bit unsigned integer (UINT32_MAX) * When writing the chunk, the library uses a single call to write(). * Linux's implementation of the 'write' syscall does not allow transfers * larger than INT32_MAX (32-bit _and_ 64-bit systems). * Make sure we do not create chunks larger than this limit. */ int32_t max_blk_per_chunk = (INT32_MAX - 12) / fs->blocksize; /* * Iterate through the filesystem's blocks, identifying "chunks" that * are contiguous ranges of blocks that are in-use by the filesystem. * Add each chunk to the sparse_file. */ for (cur_blk = ext2fs_get_block_bitmap_start2(fs->block_map); cur_blk < fs_blks; ++cur_blk) { if (ext2fs_test_block_bitmap2(fs->block_map, cur_blk)) { /* * @cur_blk is in-use. Append it to the pending chunk * if there is one, otherwise start a new chunk. */ if (chunk_start == -1) { chunk_start = cur_blk; } else if (cur_blk - chunk_start + 1 == max_blk_per_chunk) { /* * Appending @cur_blk to the pending chunk made * it reach the maximum length, so end it. */ add_chunk(fs, s, chunk_start, max_blk_per_chunk); chunk_start = -1; } } else if (chunk_start != -1) { /* @cur_blk is not in-use, so end the pending chunk. */ add_chunk(fs, s, chunk_start, cur_blk - chunk_start); chunk_start = -1; } } /* If there's still a pending chunk, end it. */ if (chunk_start != -1) add_chunk(fs, s, chunk_start, cur_blk - chunk_start); ext2fs_free(fs); return s; } static bool same_file(const char *in, const char *out) { struct stat st1, st2; if (stat(in, &st1) == -1) ext2fs_fatal(errno, "stat %s\n", in); if (stat(out, &st2) == -1) { if (errno == ENOENT) return false; ext2fs_fatal(errno, "stat %s\n", out); } return st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino; } int main(int argc, char *argv[]) { int opt; int out_fd; struct sparse_file *s; while ((opt = getopt(argc, argv, "czS")) != -1) { switch(opt) { case 'c': params.crc = true; break; case 'z': params.gzip = true; break; case 'S': params.sparse = false; break; default: usage(argv[0]); exit(EXIT_FAILURE); } } if (optind + 1 >= argc) { usage(argv[0]); exit(EXIT_FAILURE); } params.in_file = strdup(argv[optind++]); params.out_file = strdup(argv[optind]); params.overwrite_input = same_file(params.in_file, params.out_file); s = ext_to_sparse(params.in_file); out_fd = open(params.out_file, O_WRONLY | O_CREAT | O_TRUNC, 0664); if (out_fd == -1) ext2fs_fatal(errno, "opening %s\n", params.out_file); if (sparse_file_write(s, out_fd, params.gzip, params.sparse, params.crc) < 0) sparse_fatal("writing sparse file"); sparse_file_destroy(s); free(params.in_file); free(params.out_file); free_chunks(); close(out_fd); return 0; } e2fsprogs-1.47.3-rc1/contrib/android/fsmap.c000066400000000000000000000103361501560632700205450ustar00rootroot00000000000000#include "fsmap.h" #include #include #include #include #include "support/nls-enable.h" struct walk_ext_priv_data { char *path; ext2_filsys fs; struct fsmap_format *format; }; static int walk_block(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t *blocknr, e2_blkcnt_t blockcnt, blk64_t ref64_blk EXT2FS_ATTR((unused)), int ref_offset EXT2FS_ATTR((unused)), void *priv) { struct walk_ext_priv_data *pdata = priv; struct fsmap_format *format = pdata->format; return format->add_block(fs, *blocknr, blockcnt < 0, format->private); } static errcode_t ino_iter_extents(ext2_filsys fs, ext2_ino_t ino, ext2_extent_handle_t extents, struct walk_ext_priv_data *pdata) { blk64_t block; errcode_t retval; blk64_t next_lblk = 0; int op = EXT2_EXTENT_ROOT; struct ext2fs_extent extent; struct fsmap_format *format = pdata->format; for (;;) { retval = ext2fs_extent_get(extents, op, &extent); if (retval) break; op = EXT2_EXTENT_NEXT; if ((extent.e_flags & EXT2_EXTENT_FLAGS_SECOND_VISIT) || !(extent.e_flags & EXT2_EXTENT_FLAGS_LEAF)) continue; for (; next_lblk < extent.e_lblk; next_lblk++) format->add_block(fs, 0, 0, format->private); block = extent.e_pblk; for (; next_lblk < extent.e_lblk + extent.e_len; next_lblk++) format->add_block(fs, block++, 0, format->private); } if (retval == EXT2_ET_EXTENT_NO_NEXT) retval = 0; if (retval) { com_err(__func__, retval, ("getting extents of ino \"%u\""), ino); } return retval; } static errcode_t ino_iter_blocks(ext2_filsys fs, ext2_ino_t ino, struct walk_ext_priv_data *pdata) { errcode_t retval; struct ext2_inode inode; ext2_extent_handle_t extents; struct fsmap_format *format = pdata->format; retval = ext2fs_read_inode(fs, ino, &inode); if (retval) return retval; if (!ext2fs_inode_has_valid_blocks2(fs, &inode)) return format->inline_data(&(inode.i_block[0]), format->private); retval = ext2fs_extent_open(fs, ino, &extents); if (retval == EXT2_ET_INODE_NOT_EXTENT) { retval = ext2fs_block_iterate3(fs, ino, BLOCK_FLAG_READ_ONLY, NULL, walk_block, pdata); if (retval) { com_err(__func__, retval, _("listing blocks of ino \"%u\""), ino); } return retval; } retval = ino_iter_extents(fs, ino, extents, pdata); ext2fs_extent_free(extents); return retval; } static int is_dir(ext2_filsys fs, ext2_ino_t ino) { struct ext2_inode inode; if (ext2fs_read_inode(fs, ino, &inode)) return 0; return S_ISDIR(inode.i_mode); } static int walk_ext_dir(ext2_ino_t dir EXT2FS_ATTR((unused)), int flags EXT2FS_ATTR((unused)), struct ext2_dir_entry *de, int offset EXT2FS_ATTR((unused)), int blocksize EXT2FS_ATTR((unused)), char *buf EXT2FS_ATTR((unused)), void *priv_data) { errcode_t retval; struct ext2_inode inode; char *filename, *cur_path, *name = de->name; int name_len = de->name_len & 0xff; struct walk_ext_priv_data *pdata = priv_data; struct fsmap_format *format = pdata->format; if (!strncmp(name, ".", name_len) || !strncmp(name, "..", name_len) || !strncmp(name, "lost+found", 10)) return 0; if (asprintf(&filename, "%s/%.*s", pdata->path, name_len, name) < 0) return -ENOMEM; retval = ext2fs_read_inode(pdata->fs, de->inode, &inode); if (retval) { com_err(__func__, retval, _("reading ino \"%u\""), de->inode); goto end; } format->start_new_file(filename, de->inode, &inode, format->private); retval = ino_iter_blocks(pdata->fs, de->inode, pdata); if (retval) return retval; format->end_new_file(format->private); retval = 0; if (is_dir(pdata->fs, de->inode)) { cur_path = pdata->path; pdata->path = filename; retval = ext2fs_dir_iterate2(pdata->fs, de->inode, 0, NULL, walk_ext_dir, pdata); pdata->path = cur_path; } end: free(filename); return retval; } errcode_t fsmap_iter_filsys(ext2_filsys fs, struct fsmap_format *format, const char *file, const char *mountpoint) { struct walk_ext_priv_data pdata; errcode_t retval; format->private = format->init(file, mountpoint); pdata.fs = fs; pdata.path = ""; pdata.format = format; retval = ext2fs_dir_iterate2(fs, EXT2_ROOT_INO, 0, NULL, walk_ext_dir, &pdata); format->cleanup(format->private); return retval; } e2fsprogs-1.47.3-rc1/contrib/android/fsmap.h000066400000000000000000000014031501560632700205450ustar00rootroot00000000000000#ifndef FSMAP_H # define FSMAP_H # ifndef _GNU_SOURCE # define _GNU_SOURCE // asprintf # endif # include # include # include # include # include struct fsmap_format { void* (* init)(const char *file, const char *mountpoint); int (* start_new_file)(char *path, ext2_ino_t ino, struct ext2_inode *inode, void *data); int (* add_block)(ext2_filsys fs, blk64_t blocknr, int metadata, void *data); int (* inline_data)(void *inline_data, void *data); int (* end_new_file)(void *data); int (* cleanup)(void *data); void *private; }; errcode_t fsmap_iter_filsys(ext2_filsys fs, struct fsmap_format *format, const char *file, const char *mountpoint); #endif /* !FSMAP_H */ e2fsprogs-1.47.3-rc1/contrib/android/perms.c000066400000000000000000000226341501560632700205710ustar00rootroot00000000000000#ifndef _GNU_SOURCE # define _GNU_SOURCE //asprintf #endif #include "config.h" #include "perms.h" #include "support/nls-enable.h" #include #include #ifndef XATTR_SELINUX_SUFFIX # define XATTR_SELINUX_SUFFIX "selinux" #endif #ifndef XATTR_CAPS_SUFFIX # define XATTR_CAPS_SUFFIX "capability" #endif struct inode_params { ext2_filsys fs; char *path; char *filename; char *src_dir; char *target_out; char *mountpoint; fs_config_f fs_config_func; struct selabel_handle *sehnd; time_t fixed_time; const struct ugid_map* uid_map; const struct ugid_map* gid_map; errcode_t error; }; static errcode_t ino_add_xattr(ext2_filsys fs, ext2_ino_t ino, const char *name, const void *value, int value_len) { errcode_t retval, close_retval; struct ext2_xattr_handle *xhandle; retval = ext2fs_xattrs_open(fs, ino, &xhandle); if (retval) { com_err(__func__, retval, _("while opening inode %u"), ino); return retval; } retval = ext2fs_xattrs_read(xhandle); if (retval) { com_err(__func__, retval, _("while reading xattrs of inode %u"), ino); goto xattrs_close; } retval = ext2fs_xattr_set(xhandle, name, value, value_len); if (retval) { com_err(__func__, retval, _("while setting xattrs of inode %u"), ino); goto xattrs_close; } xattrs_close: close_retval = ext2fs_xattrs_close(&xhandle); if (close_retval) { com_err(__func__, close_retval, _("while closing xattrs of inode %u"), ino); return retval ? retval : close_retval; } return retval; } static errcode_t set_selinux_xattr(ext2_filsys fs, ext2_ino_t ino, struct inode_params *params) { errcode_t retval; char *secontext = NULL; struct ext2_inode inode; if (params->sehnd == NULL) return 0; retval = ext2fs_read_inode(fs, ino, &inode); if (retval) { com_err(__func__, retval, _("while reading inode %u"), ino); return retval; } retval = selabel_lookup(params->sehnd, &secontext, params->filename, inode.i_mode); if (retval < 0) { int saved_errno = errno; com_err(__func__, errno, _("searching for label \"%s\""), params->filename); return saved_errno; } retval = ino_add_xattr(fs, ino, "security." XATTR_SELINUX_SUFFIX, secontext, strlen(secontext) + 1); freecon(secontext); return retval; } /* * Returns mapped UID/GID if there is a corresponding entry in |mapping|. * Otherwise |id| as is. */ static unsigned int resolve_ugid(const struct ugid_map* mapping, unsigned int id) { size_t i; for (i = 0; i < mapping->size; ++i) { const struct ugid_map_entry* entry = &mapping->entries[i]; if (entry->parent_id <= id && id < entry->parent_id + entry->length) { return id + entry->child_id - entry->parent_id; } } /* No entry is found. */ return id; } static errcode_t set_perms_and_caps(ext2_filsys fs, ext2_ino_t ino, struct inode_params *params) { errcode_t retval; uint64_t capabilities = 0; struct ext2_inode inode; struct vfs_cap_data cap_data; unsigned int uid = 0, gid = 0, imode = 0; retval = ext2fs_read_inode(fs, ino, &inode); if (retval) { com_err(__func__, retval, _("while reading inode %u"), ino); return retval; } /* Permissions */ if (params->fs_config_func != NULL) { const char *filename = params->filename; if (strcmp(filename, params->mountpoint) == 0) { /* The root of the filesystem needs to be an empty string. */ filename = ""; } params->fs_config_func(filename, S_ISDIR(inode.i_mode), params->target_out, &uid, &gid, &imode, &capabilities); uid = resolve_ugid(params->uid_map, uid); gid = resolve_ugid(params->gid_map, gid); inode.i_uid = (__u16) uid; inode.i_gid = (__u16) gid; ext2fs_set_i_uid_high(inode, (__u16) (uid >> 16)); ext2fs_set_i_gid_high(inode, (__u16) (gid >> 16)); inode.i_mode = (inode.i_mode & S_IFMT) | (imode & 0xffff); retval = ext2fs_write_inode(fs, ino, &inode); if (retval) { com_err(__func__, retval, _("while writing inode %u"), ino); return retval; } } /* Capabilities */ if (!capabilities) return 0; memset(&cap_data, 0, sizeof(cap_data)); cap_data.magic_etc = VFS_CAP_REVISION_2 | VFS_CAP_FLAGS_EFFECTIVE; cap_data.data[0].permitted = (uint32_t) (capabilities & 0xffffffff); cap_data.data[1].permitted = (uint32_t) (capabilities >> 32); return ino_add_xattr(fs, ino, "security." XATTR_CAPS_SUFFIX, &cap_data, sizeof(cap_data)); } static errcode_t set_timestamp(ext2_filsys fs, ext2_ino_t ino, struct inode_params *params) { errcode_t retval; struct ext2_inode inode; struct stat stat; char *src_filename = NULL; retval = ext2fs_read_inode(fs, ino, &inode); if (retval) { com_err(__func__, retval, _("while reading inode %u"), ino); return retval; } if (params->fixed_time == -1 && params->src_dir) { /* replace mountpoint from filename with src_dir */ if (asprintf(&src_filename, "%s/%s", params->src_dir, params->filename + strlen(params->mountpoint)) < 0) { return -ENOMEM; } retval = lstat(src_filename, &stat); if (retval < 0) { com_err(__func__, errno, _("while lstat file %s"), src_filename); goto end; } inode.i_atime = inode.i_ctime = inode.i_mtime = stat.st_mtime; } else { inode.i_atime = inode.i_ctime = inode.i_mtime = params->fixed_time; } retval = ext2fs_write_inode(fs, ino, &inode); if (retval) { com_err(__func__, retval, _("while writing inode %u"), ino); goto end; } end: free(src_filename); return retval; } static int is_dir(ext2_filsys fs, ext2_ino_t ino) { struct ext2_inode inode; if (ext2fs_read_inode(fs, ino, &inode)) return 0; return S_ISDIR(inode.i_mode); } static errcode_t androidify_inode(ext2_filsys fs, ext2_ino_t ino, struct inode_params *params) { errcode_t retval; retval = set_timestamp(fs, ino, params); if (retval) return retval; retval = set_selinux_xattr(fs, ino, params); if (retval) return retval; return set_perms_and_caps(fs, ino, params); } static int walk_dir(ext2_ino_t dir EXT2FS_ATTR((unused)), int flags EXT2FS_ATTR((unused)), struct ext2_dir_entry *de, int offset EXT2FS_ATTR((unused)), int blocksize EXT2FS_ATTR((unused)), char *buf EXT2FS_ATTR((unused)), void *priv_data) { __u16 name_len; errcode_t retval; struct inode_params *params = (struct inode_params *)priv_data; name_len = de->name_len & 0xff; if (!strncmp(de->name, ".", name_len) || (!strncmp(de->name, "..", name_len))) return 0; if (asprintf(¶ms->filename, "%s/%.*s", params->path, name_len, de->name) < 0) { params->error = ENOMEM; return -ENOMEM; } if (!strncmp(de->name, "lost+found", 10)) { retval = set_selinux_xattr(params->fs, de->inode, params); if (retval) goto end; } else { retval = androidify_inode(params->fs, de->inode, params); if (retval) goto end; if (is_dir(params->fs, de->inode)) { char *cur_path = params->path; char *cur_filename = params->filename; params->path = params->filename; retval = ext2fs_dir_iterate2(params->fs, de->inode, 0, NULL, walk_dir, params); if (retval) goto end; params->path = cur_path; params->filename = cur_filename; } } end: free(params->filename); params->error |= retval; return retval; } errcode_t __android_configure_fs(ext2_filsys fs, char *src_dir, char *target_out, char *mountpoint, fs_config_f fs_config_func, struct selabel_handle *sehnd, time_t fixed_time, const struct ugid_map* uid_map, const struct ugid_map* gid_map) { errcode_t retval; struct inode_params params = { .fs = fs, .src_dir = src_dir, .target_out = target_out, .fs_config_func = fs_config_func, .sehnd = sehnd, .fixed_time = fixed_time, .path = mountpoint, .filename = mountpoint, .mountpoint = mountpoint, .uid_map = uid_map, .gid_map = gid_map, .error = 0 }; /* walk_dir will add the "/". Don't add it twice. */ if (strlen(mountpoint) == 1 && mountpoint[0] == '/') params.path = ""; retval = androidify_inode(fs, EXT2_ROOT_INO, ¶ms); if (retval) return retval; retval = ext2fs_dir_iterate2(fs, EXT2_ROOT_INO, 0, NULL, walk_dir, ¶ms); if (retval) return retval; return params.error; } errcode_t android_configure_fs(ext2_filsys fs, char *src_dir, char *target_out, char *mountpoint, struct selinux_opt *seopts EXT2FS_ATTR((unused)), unsigned int nopt EXT2FS_ATTR((unused)), char *fs_config_file, time_t fixed_time, const struct ugid_map* uid_map, const struct ugid_map* gid_map) { errcode_t retval; fs_config_f fs_config_func = NULL; struct selabel_handle *sehnd = NULL; /* Retrieve file contexts */ #if !defined(__ANDROID__) if (nopt > 0) { sehnd = selabel_open(SELABEL_CTX_FILE, seopts, nopt); if (!sehnd) { int saved_errno = errno; com_err(__func__, errno, _("while opening file contexts \"%s\""), seopts[0].value); return saved_errno; } } #else sehnd = selinux_android_file_context_handle(); if (!sehnd) { com_err(__func__, EINVAL, _("while opening android file_contexts")); return EINVAL; } #endif /* Load the FS config */ if (fs_config_file) { retval = load_canned_fs_config(fs_config_file); if (retval < 0) { com_err(__func__, retval, _("while loading fs_config \"%s\""), fs_config_file); return retval; } fs_config_func = canned_fs_config; } else if (mountpoint) fs_config_func = fs_config; return __android_configure_fs(fs, src_dir, target_out, mountpoint, fs_config_func, sehnd, fixed_time, uid_map, gid_map); } e2fsprogs-1.47.3-rc1/contrib/android/perms.h000066400000000000000000000032461501560632700205740ustar00rootroot00000000000000#ifndef ANDROID_PERMS_H # define ANDROID_PERMS_H # include typedef void (*fs_config_f)(const char *path, int dir, const char *target_out_path, unsigned *uid, unsigned *gid, unsigned *mode, uint64_t *capabilities); /* * Represents a range of UID/GID mapping. * This maps the id in [|parent_id|, |parent_id| + |length|) into * [|child_id|, |child_id| + |length|) */ struct ugid_map_entry { unsigned int child_id; unsigned int parent_id; unsigned int length; }; struct ugid_map { /* The number of elements in |entries|. */ size_t size; /* An array of entries. If |size| is 0, this is a null pointer. */ struct ugid_map_entry* entries; }; # ifdef _WIN32 struct selabel_handle; static inline errcode_t android_configure_fs(ext2_filsys fs, char *src_dir, char *target_out, char *mountpoint, void *seopts, unsigned int nopt, char *fs_config_file, time_t fixed_time, const struct ugid_map* uid_map, const struct ugdi_map* gid_map) { return 0; } # else # include # include # if defined(__ANDROID__) # include # endif # include # include # include errcode_t android_configure_fs(ext2_filsys fs, char *src_dir, char *target_out, char *mountpoint, struct selinux_opt *seopts, unsigned int nopt, char *fs_config_file, time_t fixed_time, const struct ugid_map* uid_map, const struct ugid_map* gid_map); # endif #endif /* !ANDROID_PERMS_H */ e2fsprogs-1.47.3-rc1/contrib/build-rpm000066400000000000000000000024171501560632700174720ustar00rootroot00000000000000#!/bin/sh # enable xtrace output if requested if [ -n ${ENABLE_XTRACE:-''} ]; then set -x fi # Build an e2fsprogs RPM from cvs pwd=`pwd` currdir=`basename $pwd` pkgname=`grep Name: e2fsprogs.spec | awk '{print $2;}'` pkgvers=`grep Version: e2fsprogs.spec | awk '{print $2;}'` builddir=${pkgname}-${pkgvers} # ensure that $TMP is set to something TMP=${TMP:-'/tmp'} cd .. tmpdir=`mktemp -d ${RPM_TMPDIR:-$TMP}/rpmtmp.XXXXXX` # We need to build a tarball for the SRPM using $builddir as the # directory name (since that's what RPM will expect it to unpack # into). That may require a symlink. # Make a recursive-symlink copy of the source dir cp -sR `pwd`/$currdir $tmpdir/$builddir || exit 1 # Remove any build files from the temporary tarball directory [ -f $tmpdir/$builddir/Makefile ] && make -C $tmpdir/$builddir distclean EXCLUDE="--exclude .hg* --exclude .pc*" (cd $tmpdir && tar czfh ${builddir}.tar.gz $EXCLUDE $builddir) [ "`rpmbuild --version 2> /dev/null`" ] && RPM=rpmbuild || RPM=rpm $RPM --define "_sourcedir $tmpdir" \ --define "_topdir ${RPM_TOPDIR:-$(rpm -E %_topdir)}" \ --define "_tmpdir ${RPM_TMPDIR:-$TMP}" \ --define "extra_config_flags ${EXTRA_CONFIG_FLAGS:-''}" \ -ba $currdir/e2fsprogs.spec rpm_exit=$? rm -rf $tmpdir exit $rpm_exit e2fsprogs-1.47.3-rc1/contrib/dconf000066400000000000000000000054551501560632700166750ustar00rootroot00000000000000#!/bin/sh #$Id$ # Create Adobe-PostScript file that graphically displays the output of # dumpe2fs(8). Use "dumpe2fs | dconf" to create a PostScript file on stdout. # Developed and tested for Linux 1.0. # Copyright (c) 1994 # Ulrich Windl # ALte Regensburger Strasse 11a # D-93149 Nittenau, Germany # SELF=`basename $0` AWKFILE=/tmp/${SELF}.awk TEMPFILE=/tmp/${SELF}.tmp echo ' BEGIN { print "B" } /^Inode count:/ { ic=$3; next } /^Block count:/ { bc=$3; next } /^First block:/ { fb=$3; next } /^Block size:/ { bs=$3; next } /^Blocks per group:/ { bpg=$4 printf("BC %d\n", bpg) printf("GC %d\n", (bc + bpg - 1) / bpg) next } /^Inodes per group:/ { ipg=$4; next } /^Last write time:/ { lwtime=$0; gsub("Last write time:[ ]+", "", lwtime) printf("T %s\n", lwtime) next } /^Group [0-9]+:/ { group=$2; gsub(":", "", group) block="" group_start=group*bpg+fb group_end=group_start+bpg printf("G %d : %d - %d\n", group, group_start, group_end) next } /^[ ]+Free blocks: / { for ( i=3; i < NF; ++i ) { block=$i; gsub(",", "", block) if ( index(block, "-") == 0 ) block=block "-" block pos=index(block, "-") printf("FB %d-%d\n", substr(block, 0, pos) - group_start, substr(block, pos + 1) - group_start) } if ( block == "" ) printf("Group %d is full\n", group) print "----" next } END { printf("E %s\n", lwtime) }' >$AWKFILE awk -f $AWKFILE $* >$TEMPFILE echo ' BEGIN { printf("%%!PS-Adobe\n") printf("%%%%BoundingBox: 0 0 1 1\n") printf("/rect {/y2 exch def /x2 exch def /y1 exch def /x1 exch def\n") printf(" newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto\n") printf(" x1 y2 lineto closepath} def\n") printf("/fb {rect gsave 1.0 setgray fill grestore} def\n") printf("/dg {rect gsave gsave 0.0 setgray fill grestore\n") printf(" 0.5 setgray stroke grestore} def\n") printf("/textxy {moveto show} bind def\n") printf("0.0001 setlinewidth\n") } $1 == "GC" && NF == 2 { number_of_groups=$2 printf("/Times-Roman findfont %g scalefont setfont\n", 1.0 / number_of_groups) next } $1 == "BC" && NF == 2 { blocks_per_group=$2; next } $1 == "T" && NF > 1 { printf("(%s) %g %g textxy\n", substr($0, 2), 0, 1.02) next } $1 == "G" && NF == 6 && $3 == ":" && $5 == "-" { group_index=$2 gs=$4 ge=$6 height=1.0 / number_of_groups vstart=group_index * height printf("%% group %d of %d:\n0 %g 1 %g dg\n", group_index, number_of_groups, vstart, vstart + height) printf("(Group %s) 1.02 %g textxy\n", group_index, vstart) next } $1 == "FB" && NF == 2 { pos = index($2, "-") printf("%% hole %s\n%g %g %g %g fb\n", $2, substr($2, 0, pos) / blocks_per_group, vstart, (substr($2, pos + 1) + 1) / blocks_per_group, vstart + height) next } END { printf("%%%%EOF\n") } ' >$AWKFILE awk -f $AWKFILE $TEMPFILE e2fsprogs-1.47.3-rc1/contrib/dir2fs000077500000000000000000000042711501560632700167730ustar00rootroot00000000000000#!/bin/sh dir="$1" dev="$2" if [ "$1" = "--help" ] || [ ! -d "${dir}" ]; then echo "Usage: $0 dir [mke2fs args] dev" exit 1 fi shift # Goal: Put all the files at the beginning (which mke2fs does) and minimize # the number of free inodes given the minimum number of blocks required. # Hence all this math to get the inode ratio just right. bytes="$(du -ks "${dir}" | awk '{print $1}')" bytes="$((bytes * 1024))" inodes="$(find "${dir}" -print0 | xargs -0 stat -c '%i' | sort -g | uniq | wc -l)" block_sz=4096 inode_sz=256 sb_overhead=4096 blocks_per_group="$((block_sz * 8))" bytes_per_group="$((blocks_per_group * block_sz))" inode_bytes="$((inodes * inode_sz))" # Estimate overhead with the minimum number of groups... nr_groups="$(( (bytes + inode_bytes + bytes_per_group - 1) / bytes_per_group))" inode_bytes_per_group="$((inode_bytes / nr_groups))" inode_blocks_per_group="$(( (inode_bytes_per_group + (block_sz - 1)) / block_sz ))" per_grp_overhead="$(( ((3 + inode_blocks_per_group) * block_sz) + 64 ))" overhead="$(( sb_overhead + (per_grp_overhead * nr_groups) ))" used_bytes="$((bytes + overhead))" # Then do it again with the real number of groups. nr_groups="$(( (used_bytes + (bytes_per_group - 1)) / bytes_per_group))" tot_blocks="$((nr_groups * blocks_per_group))" tot_bytes="$((tot_blocks * block_sz))" ratio="$((bytes / inodes))" mkfs_blocks="$((tot_blocks * 4 / 3))" mke2fs -i "${ratio}" -T ext4 -d "${dir}" -O ^resize_inode,sparse_super2,metadata_csum,64bit,^has_journal -E packed_meta_blocks=1,num_backup_sb=0 -b "${block_sz}" -I "${inodesz}" -F "${dev}" "${mkfs_blocks}" || exit e2fsck -fyD "${dev}" blocks="$(dumpe2fs -h "${dev}" 2>&1 | grep 'Block count:' | awk '{print $3}')" while resize2fs -f -M "${dev}"; do new_blocks="$(dumpe2fs -h "${dev}" 2>&1 | grep 'Block count:' | awk '{print $3}')" if [ "${new_blocks}" -eq "${blocks}" ]; then break; fi blocks="${new_blocks}" done if [ ! -b "${dev}" ]; then truncate -s "$((blocks * block_sz))" "${dev}" || (e2image -ar "${dev}" "${dev}.min"; mv "${dev}.min" "${dev}") fi e2fsck -fy "${dev}" dir_blocks="$((bytes / block_sz))" overhead="$((blocks - dir_blocks))" echo "Minimized image overhead: $((100 * overhead / dir_blocks))%" exit 0 e2fsprogs-1.47.3-rc1/contrib/e2croncheck000077500000000000000000000027701501560632700177720ustar00rootroot00000000000000#!/bin/sh # # e2croncheck -- run e2fsck automatically out of /etc/cron.weekly # # This script is intended to be run by the system administrator # periodically from the command line, or to be run once a week # or so by the cron daemon to check a mounted filesystem (normally # the root filesystem, but it could be used to check other filesystems # that are always mounted when the system is booted). # # Make sure you customize "VG" so it is your LVM volume group name, # "VOLUME" so it is the name of the filesystem's logical volume, # and "EMAIL" to be your e-mail address # # Written by Theodore Ts'o, Copyright 2007, 2008, 2009. # # This file may be redistributed under the terms of the # GNU Public License, version 2. # VG=ssd VOLUME=root SNAPSIZE=100m EMAIL=sysadmin@example.com TMPFILE=`mktemp ${TMPDIR:-/tmp}/e2fsck.log.XXXXXXXXXX` OPTS="-Fttv -C0" #OPTS="-Fttv -E fragcheck" set -e START="$(date +'%Y%m%d%H%M%S')" lvcreate -s -L ${SNAPSIZE} -n "${VOLUME}-snap" "${VG}/${VOLUME}" if nice logsave -as $TMPFILE e2fsck -p $OPTS "/dev/${VG}/${VOLUME}-snap" && \ nice logsave -as $TMPFILE e2fsck -fy $OPTS "/dev/${VG}/${VOLUME}-snap" ; then echo 'Background scrubbing succeeded!' tune2fs -C 0 -T "${START}" "/dev/${VG}/${VOLUME}" else echo 'Background scrubbing failed! Reboot to fsck soon!' tune2fs -C 16000 -T "19000101" "/dev/${VG}/${VOLUME}" if test -n "$RPT-EMAIL"; then mail -s "E2fsck of /dev/${VG}/${VOLUME} failed!" $EMAIL < $TMPFILE fi fi lvremove -f "${VG}/${VOLUME}-snap" rm $TMPFILE e2fsprogs-1.47.3-rc1/contrib/ext4-ioc.c000066400000000000000000000035751501560632700174620ustar00rootroot00000000000000/* * Test program to trigger various ext4 ioctl's */ #include #include #include #include #include #include #if (!defined(EXT4_IOC_ALLOC_DA_BLKS) && defined(__linux__)) #define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12) #endif #if (!defined(EXT4_IOC_SWAP_BOOT) && defined(__linux__)) #define EXT4_IOC_SWAP_BOOT _IO('f', 17) #endif #if (!defined(EXT4_IOC_PRECACHE_EXTENTS) && defined(__linux__)) #define EXT4_IOC_PRECACHE_EXTENTS _IO('f', 18) #endif #if (!defined(EXT4_IOC_CLEAR_ES_CACHE) && defined(__linux__)) #define EXT4_IOC_CLEAR_ES_CACHE _IO('f', 40) #endif #define EXT4_F_RW 0x0001 struct cmd { const char *cmd; unsigned long ioc; int flags; }; struct cmd cmds[] = { { "alloc_da_blks", EXT4_IOC_ALLOC_DA_BLKS, EXT4_F_RW }, { "precache", EXT4_IOC_PRECACHE_EXTENTS, 0 }, { "swap_boot", EXT4_IOC_SWAP_BOOT, EXT4_F_RW }, { "clear_es_cache", EXT4_IOC_CLEAR_ES_CACHE, EXT4_F_RW }, { NULL, 0 } }; const char *progname; void usage() { struct cmd *p; fprintf(stderr, "Usage: %s \n\n", progname); fprintf(stderr, "Available commands:\n"); for (p = cmds; p->cmd; p++) { fprintf(stderr, "\t%s\n", p->cmd); } exit(1); } int do_single_cmd(const char *fn, struct cmd *p) { int fd; int oflags = O_RDONLY; if (p->flags & EXT4_F_RW) oflags = O_RDWR; fd = open(fn, oflags, 0); if (fd < 0) { perror("open"); return 1; } if (ioctl(fd, p->ioc) < 0) { perror("ioctl"); return 1; } close(fd); return 0; } int main(int argc, char **argv) { int i, fails = 0; struct cmd *p; progname = argv[0]; if (argc < 3 || strcmp(argv[1], "help") == 0) usage(); for (p = cmds; p->cmd; p++) { if (strcmp(argv[1], p->cmd) == 0) break; } if (p->cmd == NULL) { fprintf(stderr, "Invalid command: %s\n", argv[1]); usage(); } for (i = 2; i < argc; i++) fails += do_single_cmd(argv[i], p); return fails; } e2fsprogs-1.47.3-rc1/contrib/fallocate.c000066400000000000000000000077531501560632700177620ustar00rootroot00000000000000/* * fallocate - utility to use the fallocate system call * * Copyright (C) 2008 Red Hat, Inc. All rights reserved. * Written by Eric Sandeen * * cvtnum routine taken from xfsprogs, * Copyright (c) 2003-2005 Silicon Graphics, Inc. * * This program 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. * * This program is distributed in the hope that it would 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 */ #ifndef _LARGEFILE_SOURCE #define _LARGEFILE_SOURCE #endif #ifndef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE #endif #include #include #include #include #include #include #include #include // #include #define FALLOC_FL_KEEP_SIZE 0x01 #define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #define FALLOC_FL_COLLAPSE_RANGE 0x08 #define FALLOC_FL_ZERO_RANGE 0x10 void usage(void) { printf("Usage: fallocate [-npt] [-o offset] -l length filename\n"); exit(EXIT_FAILURE); } #define EXABYTES(x) ((long long)(x) << 60) #define PETABYTES(x) ((long long)(x) << 50) #define TERABYTES(x) ((long long)(x) << 40) #define GIGABYTES(x) ((long long)(x) << 30) #define MEGABYTES(x) ((long long)(x) << 20) #define KILOBYTES(x) ((long long)(x) << 10) long long cvtnum(char *s) { long long i; char *sp; int c; i = strtoll(s, &sp, 0); if (i == 0 && sp == s) return -1LL; if (*sp == '\0') return i; if (sp[1] != '\0') return -1LL; c = tolower(*sp); switch (c) { case 'k': return KILOBYTES(i); case 'm': return MEGABYTES(i); case 'g': return GIGABYTES(i); case 't': return TERABYTES(i); case 'p': return PETABYTES(i); case 'e': return EXABYTES(i); } return -1LL; } int main(int argc, char **argv) { int fd; char *fname; int opt; ext2_loff_t length = -2LL; ext2_loff_t offset = 0; int falloc_mode = 0; int error; int tflag = 0; while ((opt = getopt(argc, argv, "npl:o:tzc")) != -1) { switch(opt) { case 'n': /* do not change filesize */ falloc_mode = FALLOC_FL_KEEP_SIZE; break; case 'p': /* punch mode */ falloc_mode = (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE); break; case 'c': /* collapse range mode */ falloc_mode = (FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_KEEP_SIZE); break; case 'z': /* zero range mode */ falloc_mode = (FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE); break; case 'l': length = cvtnum(optarg); break; case 'o': offset = cvtnum(optarg); break; case 't': tflag++; break; default: usage(); } } if (length == -2LL) { printf("Error: no length argument specified\n"); usage(); } if (length <= 0) { printf("Error: invalid length value specified\n"); usage(); } if (offset < 0) { printf("Error: invalid offset value specified\n"); usage(); } if (tflag && (falloc_mode & FALLOC_FL_KEEP_SIZE)) { printf("-n and -t options incompatible\n"); usage(); } if (tflag && offset) { printf("-n and -o options incompatible\n"); usage(); } if (optind == argc) { printf("Error: no filename specified\n"); usage(); } fname = argv[optind++]; /* Should we create the file if it doesn't already exist? */ fd = open(fname, O_WRONLY|O_LARGEFILE); if (fd < 0) { perror("Error opening file"); exit(EXIT_FAILURE); } if (tflag) error = ftruncate(fd, length); else error = syscall(SYS_fallocate, fd, falloc_mode, offset, length); if (error < 0) { perror("fallocate failed"); exit(EXIT_FAILURE); } close(fd); return 0; } e2fsprogs-1.47.3-rc1/contrib/fsstress.c000066400000000000000000001574741501560632700177120ustar00rootroot00000000000000/* * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * Further, this software is distributed without any warranty that it is * free of the rightful claim of any third person regarding infringement * or the like. Any license provided herein, whether implied or * otherwise, applies only to this software file. Patent licenses, if * any, provided herein do not apply to combinations of this program with * other software, or any other product whatsoever. * * You should have received a copy of the GNU General Public License along * with this program; if not, write the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, * Mountain View, CA 94043, or: * * http://www.sgi.com * * For further information regarding this notice, see: * * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ */ #define NO_XFS #define HAVE_SYS_PRCTL_H #define _LARGEFILE64_SOURCE #define MAXNAMELEN 1024 struct dioattr { int d_miniosz, d_maxiosz, d_mem; }; #define MIN(a,b) ((a)<(b) ? (a):(b)) #define MAX(a,b) ((a)>(b) ? (a):(b)) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef O_DIRECT #define O_DIRECT 040000 #endif #ifdef HAVE_SYS_PRCTL_H # include #endif #define XFS_ERRTAG_MAX 17 typedef enum { #ifndef NO_XFS OP_ALLOCSP, OP_ATTR_REMOVE, OP_ATTR_SET, OP_BULKSTAT, OP_BULKSTAT1, #endif OP_CHOWN, OP_CREAT, OP_DREAD, OP_DWRITE, OP_FDATASYNC, #ifndef NO_XFS OP_FREESP, #endif OP_FSYNC, OP_GETDENTS, OP_LINK, OP_MKDIR, OP_MKNOD, OP_READ, OP_READLINK, OP_RENAME, #ifndef NO_XFS OP_RESVSP, #endif OP_RMDIR, OP_STAT, OP_SYMLINK, OP_SYNC, OP_TRUNCATE, OP_UNLINK, #ifndef NO_XFS OP_UNRESVSP, #endif OP_WRITE, OP_LAST } opty_t; typedef void (*opfnc_t) (int, long); typedef struct opdesc { opty_t op; char *name; opfnc_t func; int freq; int iswrite; int isxfs; } opdesc_t; typedef struct fent { int id; int parent; } fent_t; typedef struct flist { int nfiles; int nslots; int tag; fent_t *fents; } flist_t; typedef struct pathname { int len; char *path; } pathname_t; #define FT_DIR 0 #define FT_DIRm (1 << FT_DIR) #define FT_REG 1 #define FT_REGm (1 << FT_REG) #define FT_SYM 2 #define FT_SYMm (1 << FT_SYM) #define FT_DEV 3 #define FT_DEVm (1 << FT_DEV) #define FT_RTF 4 #define FT_RTFm (1 << FT_RTF) #define FT_nft 5 #define FT_ANYm ((1 << FT_nft) - 1) #define FT_REGFILE (FT_REGm | FT_RTFm) #define FT_NOTDIR (FT_ANYm & ~FT_DIRm) #define FLIST_SLOT_INCR 16 #define NDCACHE 64 #define MAXFSIZE ((1ULL << 63) - 1ULL) #define MAXFSIZE32 ((1ULL << 40) - 1ULL) void allocsp_f(int, long); void attr_remove_f(int, long); void attr_set_f(int, long); void bulkstat_f(int, long); void bulkstat1_f(int, long); void chown_f(int, long); void creat_f(int, long); void dread_f(int, long); void dwrite_f(int, long); void fdatasync_f(int, long); void freesp_f(int, long); void fsync_f(int, long); void getdents_f(int, long); void link_f(int, long); void mkdir_f(int, long); void mknod_f(int, long); void read_f(int, long); void readlink_f(int, long); void rename_f(int, long); void resvsp_f(int, long); void rmdir_f(int, long); void stat_f(int, long); void symlink_f(int, long); void sync_f(int, long); void truncate_f(int, long); void unlink_f(int, long); void unresvsp_f(int, long); void write_f(int, long); opdesc_t ops[] = { #ifndef NO_XFS {OP_ALLOCSP, "allocsp", allocsp_f, 1, 1, 1}, {OP_ATTR_REMOVE, "attr_remove", attr_remove_f, /* 1 */ 0, 1, 1}, {OP_ATTR_SET, "attr_set", attr_set_f, /* 2 */ 0, 1, 1}, {OP_BULKSTAT, "bulkstat", bulkstat_f, 1, 0, 1}, {OP_BULKSTAT1, "bulkstat1", bulkstat1_f, 1, 0, 1}, #endif {OP_CHOWN, "chown", chown_f, 3, 1, 0}, {OP_CREAT, "creat", creat_f, 4, 1, 0}, {OP_DREAD, "dread", dread_f, 4, 0, 0}, {OP_DWRITE, "dwrite", dwrite_f, 4, 1, 0}, {OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1, 0}, #ifndef NO_XFS {OP_FREESP, "freesp", freesp_f, 1, 1, 1}, #endif {OP_FSYNC, "fsync", fsync_f, 1, 1, 0}, {OP_GETDENTS, "getdents", getdents_f, 1, 0, 0}, {OP_LINK, "link", link_f, 1, 1, 0}, {OP_MKDIR, "mkdir", mkdir_f, 2, 1, 0}, {OP_MKNOD, "mknod", mknod_f, 2, 1, 0}, {OP_READ, "read", read_f, 1, 0, 0}, {OP_READLINK, "readlink", readlink_f, 1, 0, 0}, {OP_RENAME, "rename", rename_f, 2, 1, 0}, #ifndef NO_XFS {OP_RESVSP, "resvsp", resvsp_f, 1, 1, 1}, #endif {OP_RMDIR, "rmdir", rmdir_f, 1, 1, 0}, {OP_STAT, "stat", stat_f, 1, 0, 0}, {OP_SYMLINK, "symlink", symlink_f, 2, 1, 0}, {OP_SYNC, "sync", sync_f, 1, 0, 0}, {OP_TRUNCATE, "truncate", truncate_f, 2, 1, 0}, {OP_UNLINK, "unlink", unlink_f, 1, 1, 0}, #ifndef NO_XFS {OP_UNRESVSP, "unresvsp", unresvsp_f, 1, 1, 1}, #endif {OP_WRITE, "write", write_f, 4, 1, 0}, }, *ops_end; flist_t flist[FT_nft] = { {0, 0, 'd', NULL}, {0, 0, 'f', NULL}, {0, 0, 'l', NULL}, {0, 0, 'c', NULL}, {0, 0, 'r', NULL}, }; int dcache[NDCACHE]; int errrange; int errtag; opty_t *freq_table; int freq_table_size; #ifndef NO_XFS xfs_fsop_geom_t geom; #endif char *homedir; int *ilist; int ilistlen; off64_t maxfsize; char *myprog; int namerand; int nameseq; int nops; int nproc = 1; int operations = 1; int procid; int rtpct; unsigned long seed = 0; ino_t top_ino; int verbose = 0; #ifndef NO_XFS int no_xfs = 0; #else int no_xfs = 1; #endif sig_atomic_t should_stop = 0; void add_to_flist(int, int, int); void append_pathname(pathname_t *, char *); #ifndef NO_XFS int attr_list_path(pathname_t *, char *, const int, int, attrlist_cursor_t *); int attr_remove_path(pathname_t *, const char *, int); int attr_set_path(pathname_t *, const char *, const char *, const int, int); #endif void check_cwd(void); int creat_path(pathname_t *, mode_t); void dcache_enter(int, int); void dcache_init(void); fent_t *dcache_lookup(int); void dcache_purge(int); void del_from_flist(int, int); int dirid_to_name(char *, int); void doproc(void); void fent_to_name(pathname_t *, flist_t *, fent_t *); void fix_parent(int, int); void free_pathname(pathname_t *); int generate_fname(fent_t *, int, pathname_t *, int *, int *); int get_fname(int, long, pathname_t *, flist_t **, fent_t **, int *); void init_pathname(pathname_t *); int lchown_path(pathname_t *, uid_t, gid_t); int link_path(pathname_t *, pathname_t *); int lstat64_path(pathname_t *, struct stat64 *); void make_freq_table(void); int mkdir_path(pathname_t *, mode_t); int mknod_path(pathname_t *, mode_t, dev_t); void namerandpad(int, char *, int); int open_path(pathname_t *, int); DIR *opendir_path(pathname_t *); void process_freq(char *); int readlink_path(pathname_t *, char *, size_t); int rename_path(pathname_t *, pathname_t *); int rmdir_path(pathname_t *); void separate_pathname(pathname_t *, char *, pathname_t *); void show_ops(int, char *); int stat64_path(pathname_t *, struct stat64 *); int symlink_path(const char *, pathname_t *); int truncate64_path(pathname_t *, off64_t); int unlink_path(pathname_t *); void usage(void); void write_freq(void); void zero_freq(void); void sg_handler(int signum) { should_stop = 1; } int main(int argc, char **argv) { char buf[10]; int c; char *dirname = NULL; int fd; int i; int cleanup = 0; int loops = 1; int loopcntr = 1; char cmd[256]; #ifndef NO_XFS int j; #endif char *p; int stat; struct timeval t; #ifndef NO_XFS ptrdiff_t srval; #endif int nousage = 0; #ifndef NO_XFS xfs_error_injection_t err_inj; #endif struct sigaction action; errrange = errtag = 0; umask(0); nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; while ((c = getopt(argc, argv, "cd:e:f:i:l:n:p:rs:vwzHSX")) != -1) { switch (c) { case 'c': /*Don't cleanup */ cleanup = 1; break; case 'd': dirname = optarg; break; case 'e': sscanf(optarg, "%d", &errtag); if (errtag < 0) { errtag = -errtag; errrange = 1; } else if (errtag == 0) errtag = -1; if (errtag >= XFS_ERRTAG_MAX) { fprintf(stderr, "error tag %d too large (max %d)\n", errtag, XFS_ERRTAG_MAX - 1); exit(1); } break; case 'f': process_freq(optarg); break; case 'i': ilist = realloc(ilist, ++ilistlen * sizeof(*ilist)); ilist[ilistlen - 1] = strtol(optarg, &p, 16); break; case 'l': loops = atoi(optarg); break; case 'n': operations = atoi(optarg); break; case 'p': nproc = atoi(optarg); break; case 'r': namerand = 1; break; case 's': seed = strtoul(optarg, NULL, 0); break; case 'v': verbose = 1; break; case 'w': write_freq(); break; case 'z': zero_freq(); break; case 'S': show_ops(0, NULL); printf("\n"); nousage = 1; break; case '?': fprintf(stderr, "%s - invalid parameters\n", myprog); /* fall through */ case 'H': usage(); exit(1); case 'X': no_xfs = 1; break; } } if (no_xfs && errtag) { fprintf(stderr, "error injection only works on XFS\n"); exit(1); } if (no_xfs) { int i; for (i = 0; ops + i < ops_end; ++i) { if (ops[i].isxfs) ops[i].freq = 0; } } make_freq_table(); while (((loopcntr <= loops) || (loops == 0)) && !should_stop) { if (!dirname) { /* no directory specified */ if (!nousage) usage(); exit(1); } (void)mkdir(dirname, 0777); if (chdir(dirname) < 0) { perror(dirname); exit(1); } sprintf(buf, "fss%x", getpid()); fd = creat(buf, 0666); if (lseek64(fd, (off64_t) (MAXFSIZE32 + 1ULL), SEEK_SET) < 0) maxfsize = (off64_t) MAXFSIZE32; else maxfsize = (off64_t) MAXFSIZE; dcache_init(); setlinebuf(stdout); if (!seed) { gettimeofday(&t, NULL); seed = (int)t.tv_sec ^ (int)t.tv_usec; printf("seed = %ld\n", seed); } #ifndef NO_XFS if (!no_xfs) { memset(&geom, 0, sizeof(geom)); i = ioctl(fd, XFS_IOC_FSGEOMETRY, &geom); if (i >= 0 && geom.rtblocks) rtpct = MIN(MAX(geom.rtblocks * 100 / (geom.rtblocks + geom.datablocks), 1), 99); else rtpct = 0; } if (errtag != 0) { if (errrange == 0) { if (errtag <= 0) { srandom(seed); j = random() % 100; for (i = 0; i < j; i++) (void)random(); errtag = (random() % (XFS_ERRTAG_MAX - 1)) + 1; } } else { srandom(seed); j = random() % 100; for (i = 0; i < j; i++) (void)random(); errtag += (random() % (XFS_ERRTAG_MAX - errtag)); } printf("Injecting failure on tag #%d\n", errtag); memset(&err_inj, 0, sizeof(err_inj)); err_inj.errtag = errtag; err_inj.fd = fd; srval = ioctl(fd, XFS_IOC_ERROR_INJECTION, &err_inj); if (srval < -1) { perror ("fsstress - XFS_SYSSGI error injection call"); close(fd); unlink(buf); exit(1); } } else #endif close(fd); unlink(buf); if (nproc == 1) { procid = 0; doproc(); } else { setpgid(0, 0); action.sa_handler = sg_handler; sigemptyset(&action.sa_mask); action.sa_flags = 0; if (sigaction(SIGTERM, &action, 0)) { perror("sigaction failed"); exit(1); } for (i = 0; i < nproc; i++) { if (fork() == 0) { action.sa_handler = SIG_DFL; sigemptyset(&action.sa_mask); if (sigaction(SIGTERM, &action, 0)) return 1; #ifdef HAVE_SYS_PRCTL_H prctl(PR_SET_PDEATHSIG, SIGKILL); if (getppid() == 1) /* parent died already? */ return 0; #endif procid = i; doproc(); return 0; } } while (wait(&stat) > 0 && !should_stop) { continue; } if (should_stop) { action.sa_flags = SA_RESTART; sigaction(SIGTERM, &action, 0); kill(-getpid(), SIGTERM); while (wait(&stat) > 0) continue; } } #ifndef NO_XFS if (errtag != 0) { memset(&err_inj, 0, sizeof(err_inj)); err_inj.errtag = 0; err_inj.fd = fd; if ((srval = ioctl(fd, XFS_IOC_ERROR_CLEARALL, &err_inj)) != 0) { fprintf(stderr, "Bad ej clear on %d (%d).\n", fd, errno); perror ("fsstress - XFS_SYSSGI clear error injection call"); close(fd); exit(1); } close(fd); } #endif if (cleanup == 0) { sprintf(cmd, "rm -rf %s/*", dirname); system(cmd); for (i = 0; i < FT_nft; i++) { flist[i].nslots = 0; flist[i].nfiles = 0; free(flist[i].fents); flist[i].fents = NULL; } } loopcntr++; } return 0; } void add_to_flist(int ft, int id, int parent) { fent_t *fep; flist_t *ftp; ftp = &flist[ft]; if (ftp->nfiles == ftp->nslots) { ftp->nslots += FLIST_SLOT_INCR; ftp->fents = realloc(ftp->fents, ftp->nslots * sizeof(fent_t)); } fep = &ftp->fents[ftp->nfiles++]; fep->id = id; fep->parent = parent; } void append_pathname(pathname_t * name, char *str) { int len; char *path; len = strlen(str); #ifdef DEBUG if (len && *str == '/' && name->len == 0) { fprintf(stderr, "fsstress: append_pathname failure\n"); chdir(homedir); abort(); } #endif path = realloc(name->path, name->len + 1 + len); if (path == NULL) { fprintf(stderr, "fsstress: append_pathname realloc failed\n"); chdir(homedir); abort(); } name->path = path; strcpy(&name->path[name->len], str); name->len += len; } #ifndef NO_XFS int attr_list_path(pathname_t * name, char *buffer, const int buffersize, int flags, attrlist_cursor_t * cursor) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = attr_list(name->path, buffer, buffersize, flags, cursor); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = attr_list_path(&newname, buffer, buffersize, flags, cursor); chdir(".."); } free_pathname(&newname); return rval; } int attr_remove_path(pathname_t * name, const char *attrname, int flags) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = attr_remove(name->path, attrname, flags); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = attr_remove_path(&newname, attrname, flags); chdir(".."); } free_pathname(&newname); return rval; } int attr_set_path(pathname_t * name, const char *attrname, const char *attrvalue, const int valuelength, int flags) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = attr_set(name->path, attrname, attrvalue, valuelength, flags); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = attr_set_path(&newname, attrname, attrvalue, valuelength, flags); chdir(".."); } free_pathname(&newname); return rval; } #endif void check_cwd(void) { #ifdef DEBUG struct stat64 statbuf; if (stat64(".", &statbuf) == 0 && statbuf.st_ino == top_ino) return; chdir(homedir); fprintf(stderr, "fsstress: check_cwd failure\n"); abort(); #endif } int creat_path(pathname_t * name, mode_t mode) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = creat(name->path, mode); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = creat_path(&newname, mode); chdir(".."); } free_pathname(&newname); return rval; } void dcache_enter(int dirid, int slot) { dcache[dirid % NDCACHE] = slot; } void dcache_init(void) { int i; for (i = 0; i < NDCACHE; i++) dcache[i] = -1; } fent_t *dcache_lookup(int dirid) { fent_t *fep; int i; i = dcache[dirid % NDCACHE]; if (i >= 0 && (fep = &flist[FT_DIR].fents[i])->id == dirid) return fep; return NULL; } void dcache_purge(int dirid) { int *dcp; dcp = &dcache[dirid % NDCACHE]; if (*dcp >= 0 && flist[FT_DIR].fents[*dcp].id == dirid) *dcp = -1; } void del_from_flist(int ft, int slot) { flist_t *ftp; ftp = &flist[ft]; if (ft == FT_DIR) dcache_purge(ftp->fents[slot].id); if (slot != ftp->nfiles - 1) { if (ft == FT_DIR) dcache_purge(ftp->fents[ftp->nfiles - 1].id); ftp->fents[slot] = ftp->fents[--ftp->nfiles]; } else ftp->nfiles--; } fent_t *dirid_to_fent(int dirid) { fent_t *efep; fent_t *fep; flist_t *flp; if ((fep = dcache_lookup(dirid))) return fep; flp = &flist[FT_DIR]; for (fep = flp->fents, efep = &fep[flp->nfiles]; fep < efep; fep++) { if (fep->id == dirid) { dcache_enter(dirid, fep - flp->fents); return fep; } } return NULL; } void doproc(void) { struct stat64 statbuf; char buf[10]; int opno; int rval; opdesc_t *p; sprintf(buf, "p%x", procid); (void)mkdir(buf, 0777); if (chdir(buf) < 0 || stat64(".", &statbuf) < 0) { perror(buf); _exit(1); } top_ino = statbuf.st_ino; homedir = getcwd(NULL, -1); seed += procid; srandom(seed); if (namerand) namerand = random(); for (opno = 0; opno < operations; opno++) { p = &ops[freq_table[random() % freq_table_size]]; if ((unsigned long)p->func < 4096) abort(); p->func(opno, random()); /* * test for forced shutdown by stat'ing the test * directory. If this stat returns EIO, assume * the forced shutdown happened. */ if (errtag != 0 && opno % 100 == 0) { rval = stat64(".", &statbuf); if (rval == EIO) { fprintf(stderr, "Detected EIO\n"); return; } } } } void fent_to_name(pathname_t * name, flist_t * flp, fent_t * fep) { char buf[MAXNAMELEN]; int i; fent_t *pfep; if (fep == NULL) return; if (fep->parent != -1) { pfep = dirid_to_fent(fep->parent); fent_to_name(name, &flist[FT_DIR], pfep); append_pathname(name, "/"); } i = sprintf(buf, "%c%x", flp->tag, fep->id); namerandpad(fep->id, buf, i); append_pathname(name, buf); } void fix_parent(int oldid, int newid) { fent_t *fep; flist_t *flp; int i; int j; for (i = 0, flp = flist; i < FT_nft; i++, flp++) { for (j = 0, fep = flp->fents; j < flp->nfiles; j++, fep++) { if (fep->parent == oldid) fep->parent = newid; } } } void free_pathname(pathname_t * name) { if (name->path) { free(name->path); name->path = NULL; name->len = 0; } } int generate_fname(fent_t * fep, int ft, pathname_t * name, int *idp, int *v) { char buf[MAXNAMELEN]; flist_t *flp; int id; int j; int len; flp = &flist[ft]; len = sprintf(buf, "%c%x", flp->tag, id = nameseq++); namerandpad(id, buf, len); if (fep) { fent_to_name(name, &flist[FT_DIR], fep); append_pathname(name, "/"); } append_pathname(name, buf); *idp = id; *v = verbose; for (j = 0; !*v && j < ilistlen; j++) { if (ilist[j] == id) { *v = 1; break; } } return 1; } int get_fname(int which, long r, pathname_t * name, flist_t ** flpp, fent_t ** fepp, int *v) { int c; fent_t *fep; flist_t *flp; int i; int j; int x; for (i = 0, c = 0, flp = flist; i < FT_nft; i++, flp++) { if (which & (1 << i)) c += flp->nfiles; } if (c == 0) { if (flpp) *flpp = NULL; if (fepp) *fepp = NULL; *v = verbose; return 0; } x = (int)(r % c); for (i = 0, c = 0, flp = flist; i < FT_nft; i++, flp++) { if (which & (1 << i)) { if (x < c + flp->nfiles) { fep = &flp->fents[x - c]; if (name) fent_to_name(name, flp, fep); if (flpp) *flpp = flp; if (fepp) *fepp = fep; *v = verbose; for (j = 0; !*v && j < ilistlen; j++) { if (ilist[j] == fep->id) { *v = 1; break; } } return 1; } c += flp->nfiles; } } #ifdef DEBUG fprintf(stderr, "fsstress: get_fname failure\n"); abort(); #endif return -1; } void init_pathname(pathname_t * name) { name->len = 0; name->path = NULL; } int lchown_path(pathname_t * name, uid_t owner, gid_t group) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = lchown(name->path, owner, group); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = lchown_path(&newname, owner, group); chdir(".."); } free_pathname(&newname); return rval; } int link_path(pathname_t * name1, pathname_t * name2) { char buf1[MAXNAMELEN]; char buf2[MAXNAMELEN]; int down1; pathname_t newname1; pathname_t newname2; int rval; rval = link(name1->path, name2->path); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name1, buf1, &newname1); separate_pathname(name2, buf2, &newname2); if (strcmp(buf1, buf2) == 0) { if (chdir(buf1) == 0) { rval = link_path(&newname1, &newname2); chdir(".."); } } else { if (strcmp(buf1, "..") == 0) down1 = 0; else if (strcmp(buf2, "..") == 0) down1 = 1; else if (strlen(buf1) == 0) down1 = 0; else if (strlen(buf2) == 0) down1 = 1; else down1 = MAX(newname1.len, 3 + name2->len) <= MAX(3 + name1->len, newname2.len); if (down1) { free_pathname(&newname2); append_pathname(&newname2, "../"); append_pathname(&newname2, name2->path); if (chdir(buf1) == 0) { rval = link_path(&newname1, &newname2); chdir(".."); } } else { free_pathname(&newname1); append_pathname(&newname1, "../"); append_pathname(&newname1, name1->path); if (chdir(buf2) == 0) { rval = link_path(&newname1, &newname2); chdir(".."); } } } free_pathname(&newname1); free_pathname(&newname2); return rval; } int lstat64_path(pathname_t * name, struct stat64 *sbuf) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = lstat64(name->path, sbuf); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = lstat64_path(&newname, sbuf); chdir(".."); } free_pathname(&newname); return rval; } void make_freq_table(void) { int f; int i; opdesc_t *p; for (p = ops, f = 0; p < ops_end; p++) f += p->freq; freq_table = malloc(f * sizeof(*freq_table)); freq_table_size = f; for (p = ops, i = 0; p < ops_end; p++) { for (f = 0; f < p->freq; f++, i++) freq_table[i] = p->op; } } int mkdir_path(pathname_t * name, mode_t mode) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = mkdir(name->path, mode); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = mkdir_path(&newname, mode); chdir(".."); } free_pathname(&newname); return rval; } int mknod_path(pathname_t * name, mode_t mode, dev_t dev) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = mknod(name->path, mode, dev); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = mknod_path(&newname, mode, dev); chdir(".."); } free_pathname(&newname); return rval; } void namerandpad(int id, char *buf, int i) { int bucket; static int buckets[] = { 2, 4, 8, 16, 32, 64, 128, MAXNAMELEN - 1 }; int padlen; int padmod; if (namerand == 0) return; bucket = (id ^ namerand) % (sizeof(buckets) / sizeof(buckets[0])); padmod = buckets[bucket] + 1 - i; if (padmod <= 0) return; padlen = (id ^ namerand) % padmod; if (padlen) { memset(&buf[i], 'X', padlen); buf[i + padlen] = '\0'; } } int open_path(pathname_t * name, int oflag) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = open(name->path, oflag); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = open_path(&newname, oflag); chdir(".."); } free_pathname(&newname); return rval; } DIR *opendir_path(pathname_t * name) { char buf[MAXNAMELEN]; pathname_t newname; DIR *rval; rval = opendir(name->path); if (rval || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = opendir_path(&newname); chdir(".."); } free_pathname(&newname); return rval; } void process_freq(char *arg) { opdesc_t *p; char *s; s = strchr(arg, '='); if (s == NULL) { fprintf(stderr, "bad argument '%s'\n", arg); exit(1); } *s++ = '\0'; for (p = ops; p < ops_end; p++) { if (strcmp(arg, p->name) == 0) { p->freq = atoi(s); return; } } fprintf(stderr, "can't find op type %s for -f\n", arg); exit(1); } int readlink_path(pathname_t * name, char *lbuf, size_t lbufsiz) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = readlink(name->path, lbuf, lbufsiz); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = readlink_path(&newname, lbuf, lbufsiz); chdir(".."); } free_pathname(&newname); return rval; } int rename_path(pathname_t * name1, pathname_t * name2) { char buf1[MAXNAMELEN]; char buf2[MAXNAMELEN]; int down1; pathname_t newname1; pathname_t newname2; int rval; rval = rename(name1->path, name2->path); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name1, buf1, &newname1); separate_pathname(name2, buf2, &newname2); if (strcmp(buf1, buf2) == 0) { if (chdir(buf1) == 0) { rval = rename_path(&newname1, &newname2); chdir(".."); } } else { if (strcmp(buf1, "..") == 0) down1 = 0; else if (strcmp(buf2, "..") == 0) down1 = 1; else if (strlen(buf1) == 0) down1 = 0; else if (strlen(buf2) == 0) down1 = 1; else down1 = MAX(newname1.len, 3 + name2->len) <= MAX(3 + name1->len, newname2.len); if (down1) { free_pathname(&newname2); append_pathname(&newname2, "../"); append_pathname(&newname2, name2->path); if (chdir(buf1) == 0) { rval = rename_path(&newname1, &newname2); chdir(".."); } } else { free_pathname(&newname1); append_pathname(&newname1, "../"); append_pathname(&newname1, name1->path); if (chdir(buf2) == 0) { rval = rename_path(&newname1, &newname2); chdir(".."); } } } free_pathname(&newname1); free_pathname(&newname2); return rval; } int rmdir_path(pathname_t * name) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = rmdir(name->path); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = rmdir_path(&newname); chdir(".."); } free_pathname(&newname); return rval; } void separate_pathname(pathname_t * name, char *buf, pathname_t * newname) { char *slash; init_pathname(newname); slash = strchr(name->path, '/'); if (slash == NULL) { buf[0] = '\0'; return; } *slash = '\0'; strcpy(buf, name->path); *slash = '/'; append_pathname(newname, slash + 1); } #define WIDTH 80 void show_ops(int flag, char *lead_str) { opdesc_t *p; if (flag < 0) { /* print in list form */ int x = WIDTH; for (p = ops; p < ops_end; p++) { if (lead_str != NULL && x + strlen(p->name) >= WIDTH - 5) x = printf("%s%s", (p == ops) ? "" : "\n", lead_str); x += printf("%s ", p->name); } printf("\n"); } else { int f; for (f = 0, p = ops; p < ops_end; p++) f += p->freq; if (f == 0) flag = 1; for (p = ops; p < ops_end; p++) { if (flag != 0 || p->freq > 0) { if (lead_str != NULL) printf("%s", lead_str); printf("%20s %d/%d %s\n", p->name, p->freq, f, (p->iswrite == 0) ? " " : "write op"); } } } } int stat64_path(pathname_t * name, struct stat64 *sbuf) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = stat64(name->path, sbuf); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = stat64_path(&newname, sbuf); chdir(".."); } free_pathname(&newname); return rval; } int symlink_path(const char *name1, pathname_t * name) { char buf[MAXNAMELEN]; pathname_t newname; int rval; if (!strcmp(name1, name->path)) { printf("yikes! %s %s\n", name1, name->path); return 0; } rval = symlink(name1, name->path); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = symlink_path(name1, &newname); chdir(".."); } free_pathname(&newname); return rval; } int truncate64_path(pathname_t * name, off64_t length) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = truncate64(name->path, length); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = truncate64_path(&newname, length); chdir(".."); } free_pathname(&newname); return rval; } int unlink_path(pathname_t * name) { char buf[MAXNAMELEN]; pathname_t newname; int rval; rval = unlink(name->path); if (rval >= 0 || errno != ENAMETOOLONG) return rval; separate_pathname(name, buf, &newname); if (chdir(buf) == 0) { rval = unlink_path(&newname); chdir(".."); } free_pathname(&newname); return rval; } void usage(void) { printf("Usage: %s -H or\n", myprog); printf (" %s [-c][-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n", myprog); printf(" [-p nproc][-r len][-s seed][-v][-w][-z][-S]\n"); printf("where\n"); printf (" -c specifies not to remove files(cleanup) after execution\n"); printf (" -d dir specifies the base directory for operations\n"); printf(" -e errtg specifies error injection stuff\n"); printf (" -f op_name=freq changes the frequency of option name to freq\n"); printf(" the valid operation names are:\n"); show_ops(-1, " "); printf (" -l loops specifies the no. of times the testrun should loop.\n"); printf(" *use 0 for infinite (default 1)\n"); printf (" -n nops specifies the no. of operations per process (default 1)\n"); printf (" -p nproc specifies the no. of processes (default 1)\n"); printf(" -r specifies random name padding\n"); printf (" -s seed specifies the seed for the random generator (default random)\n"); printf(" -v specifies verbose mode\n"); printf (" -w zeros frequencies of non-write operations\n"); printf(" -z zeros frequencies of all operations\n"); printf (" -S prints the table of operations (omitting zero frequency)\n"); printf(" -H prints usage and exits\n"); printf (" -X don't do anything XFS specific (default with -DNO_XFS)\n"); } void write_freq(void) { opdesc_t *p; for (p = ops; p < ops_end; p++) { if (!p->iswrite) p->freq = 0; } } void zero_freq(void) { opdesc_t *p; for (p = ops; p < ops_end; p++) p->freq = 0; } #ifndef NO_XFS void allocsp_f(int opno, long r) { int e; pathname_t f; int fd; struct xfs_flock64 fl; __s64 lr; __s64 off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: allocsp - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDWR); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: allocsp - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: allocsp - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } lr = ((__s64) random() << 32) + random(); off = lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE); off %= maxfsize; memset(&fl, 0, sizeof(fl)); fl.l_whence = SEEK_SET; fl.l_start = off; fl.l_len = 0; e = ioctl(fd, XFS_IOC_ALLOCSP64, &fl) < 0 ? errno : 0; if (v) printf("%d/%d: ioctl(XFS_IOC_ALLOCSP64) %s %lld 0 %d\n", procid, opno, f.path, (long long)off, e); free_pathname(&f); close(fd); } void attr_remove_f(int opno, long r) { attrlist_ent_t *aep; attrlist_t *alist; char *aname; char buf[4096]; attrlist_cursor_t cursor; int e; int ent; pathname_t f; int total; int v; int which; init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) append_pathname(&f, "."); total = 0; memset(&cursor, 0x00, sizeof(cursor)); do { e = attr_list_path(&f, buf, sizeof(buf), ATTR_DONTFOLLOW, &cursor); check_cwd(); if (e) break; alist = (attrlist_t *) buf; total += alist->al_count; } while (alist->al_more); if (total == 0) { if (v) printf("%d/%d: attr_remove - no attrs for %s\n", procid, opno, f.path); free_pathname(&f); return; } which = (int)(random() % total); memset(&cursor, 0x00, sizeof(cursor)); ent = 0; aname = NULL; do { e = attr_list_path(&f, buf, sizeof(buf), ATTR_DONTFOLLOW, &cursor); check_cwd(); if (e) break; alist = (attrlist_t *) buf; if (which < ent + alist->al_count) { aep = (attrlist_ent_t *) & buf[alist->al_offset[which - ent]]; aname = aep->a_name; break; } ent += alist->al_count; } while (alist->al_more); if (aname == NULL) { if (v) printf("%d/%d: attr_remove - name %d not found at %s\n", procid, opno, which, f.path); free_pathname(&f); return; } e = attr_remove_path(&f, aname, ATTR_DONTFOLLOW) < 0 ? errno : 0; check_cwd(); if (v) printf("%d/%d: attr_remove %s %s %d\n", procid, opno, f.path, aname, e); free_pathname(&f); } void attr_set_f(int opno, long r) { char aname[10]; char *aval; int e; pathname_t f; int len; static int lengths[] = { 10, 100, 1000, 10000 }; int li; int v; init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) append_pathname(&f, "."); sprintf(aname, "a%x", nameseq++); li = (int)(random() % (sizeof(lengths) / sizeof(lengths[0]))); len = (int)(random() % lengths[li]); if (len == 0) len = 1; aval = malloc(len); memset(aval, nameseq & 0xff, len); e = attr_set_path(&f, aname, aval, len, ATTR_DONTFOLLOW) < 0 ? errno : 0; check_cwd(); free(aval); if (v) printf("%d/%d: attr_set %s %s %d\n", procid, opno, f.path, aname, e); free_pathname(&f); } void bulkstat_f(int opno, long r) { __s32 count; int fd; __u64 last; __s32 nent; xfs_bstat_t *t; __int64_t total; xfs_fsop_bulkreq_t bsr; last = 0; nent = (r % 999) + 2; t = malloc(nent * sizeof(*t)); fd = open(".", O_RDONLY); total = 0; memset(&bsr, 0, sizeof(bsr)); bsr.lastip = &last; bsr.icount = nent; bsr.ubuffer = t; bsr.ocount = &count; while (ioctl(fd, XFS_IOC_FSBULKSTAT, &bsr) == 0 && count > 0) total += count; free(t); if (verbose) printf("%d/%d: bulkstat nent %d total %lld\n", procid, opno, (int)nent, (long long)total); close(fd); } void bulkstat1_f(int opno, long r) { int e; pathname_t f; int fd; int good; __u64 ino; struct stat64 s; xfs_bstat_t t; int v; xfs_fsop_bulkreq_t bsr; good = random() & 1; if (good) { /* use an inode we know exists */ init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) append_pathname(&f, "."); ino = stat64_path(&f, &s) < 0 ? (ino64_t) r : s.st_ino; check_cwd(); free_pathname(&f); } else { /* * pick a random inode * * note this can generate kernel warning messages * since bulkstat_one will read the disk block that * would contain a given inode even if that disk * block doesn't contain inodes. * * this is detected later, but not until after the * warning is displayed. * * "XFS: device 0x825- bad inode magic/vsn daddr 0x0 #0" * */ ino = (ino64_t) r; v = verbose; } fd = open(".", O_RDONLY); memset(&bsr, 0, sizeof(bsr)); bsr.lastip = &ino; bsr.icount = 1; bsr.ubuffer = &t; bsr.ocount = NULL; e = ioctl(fd, XFS_IOC_FSBULKSTAT_SINGLE, &bsr) < 0 ? errno : 0; if (v) printf("%d/%d: bulkstat1 %s ino %lld %d\n", procid, opno, good ? "real" : "random", (long long)ino, e); close(fd); } #endif void chown_f(int opno, long r) { int e; pathname_t f; int nbits; uid_t u; int v; init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) append_pathname(&f, "."); u = (uid_t) random(); nbits = (int)(random() % 32); u &= (1 << nbits) - 1; e = lchown_path(&f, u, -1) < 0 ? errno : 0; check_cwd(); if (v) printf("%d/%d: chown %s %d %d\n", procid, opno, f.path, u, e); free_pathname(&f); } void creat_f(int opno, long r) { int e; int e1; int extsize; pathname_t f; int fd; fent_t *fep; int id; int parid; int type; int v; int v1; int esz = 0; if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v1)) parid = -1; else parid = fep->id; init_pathname(&f); type = rtpct ? ((random() % 100) > rtpct ? FT_REG : FT_RTF) : FT_REG; if (type == FT_RTF) extsize = (random() % 10) + 1; else extsize = 0; e = generate_fname(fep, type, &f, &id, &v); v |= v1; if (!e) { if (v) { fent_to_name(&f, &flist[FT_DIR], fep); printf("%d/%d: creat - no filename from %s\n", procid, opno, f.path); } free_pathname(&f); return; } fd = creat_path(&f, 0666); e = fd < 0 ? errno : 0; e1 = 0; check_cwd(); esz = 0; if (fd >= 0) { #ifndef NO_XFS struct fsxattr a; memset(&a, 0, sizeof(a)); if (extsize && ioctl(fd, XFS_IOC_FSGETXATTR, &a) >= 0) { a.fsx_xflags |= XFS_XFLAG_REALTIME; a.fsx_extsize = geom.rtextsize * geom.blocksize * extsize; if (ioctl(fd, XFS_IOC_FSSETXATTR, &a) < 0) e1 = errno; esz = a.fsx_extsize; } #endif add_to_flist(type, id, parid); close(fd); } if (v) printf("%d/%d: creat %s x:%d %d %d\n", procid, opno, f.path, esz, e, e1); free_pathname(&f); } int setdirect(int fd) { static int no_direct; int flags; if (no_direct) return 0; flags = fcntl(fd, F_GETFL, 0); if (flags < 0) return 0; if (fcntl(fd, F_SETFL, flags | O_DIRECT) < 0) { if (no_xfs) { no_direct = 1; return 0; } printf("cannot set O_DIRECT: %s\n", strerror(errno)); return 0; } return 1; } void dread_f(int opno, long r) { __int64_t align; char *buf = NULL; struct dioattr diob; int e; pathname_t f; int fd; size_t len; __int64_t lr; off64_t off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: dread - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: dread - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (!setdirect(fd)) { close(fd); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: dread - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } if (stb.st_size == 0) { if (v) printf("%d/%d: dread - %s zero size\n", procid, opno, f.path); free_pathname(&f); close(fd); return; } memset(&diob, 0, sizeof(diob)); if (no_xfs) { diob.d_miniosz = stb.st_blksize; diob.d_maxiosz = stb.st_blksize * 256; /* good number ? */ diob.d_mem = stb.st_blksize; } #ifndef NO_XFS else if (ioctl(fd, XFS_IOC_DIOINFO, &diob) < 0) { if (v) printf ("%d/%d: dread - ioctl(fd, XFS_IOC_DIOINFO) %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } #endif align = (__int64_t) diob.d_miniosz; lr = ((__int64_t) random() << 32) + random(); off = (off64_t) (lr % stb.st_size); off -= (off % align); lseek64(fd, off, SEEK_SET); len = (random() % (getpagesize() * 32)) + 1; len -= (len % align); if (len <= 0) len = align; else if (len > diob.d_maxiosz) len = diob.d_maxiosz; if ((e = posix_memalign((void **)&buf, diob.d_mem, len)) != 0) { fprintf(stderr, "posix_memalign: %s\n", strerror(e)); exit(1); } if (buf == NULL) { fprintf(stderr, "posix_memalign: buf is NULL\n"); exit(1); } e = read(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) printf("%d/%d: dread %s [%lld,%ld] %d\n", procid, opno, f.path, (long long int)off, (long)len, e); free_pathname(&f); close(fd); } void dwrite_f(int opno, long r) { __int64_t align; char *buf = NULL; struct dioattr diob; int e; pathname_t f; int fd; size_t len; __int64_t lr; off64_t off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: dwrite - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_WRONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: dwrite - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (!setdirect(fd)) { close(fd); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: dwrite - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } memset(&diob, 0, sizeof(diob)); if (no_xfs) { diob.d_miniosz = stb.st_blksize; diob.d_maxiosz = stb.st_blksize * 256; /* good number ? */ diob.d_mem = stb.st_blksize; } #ifndef NO_XFS else if (ioctl(fd, XFS_IOC_DIOINFO, &diob) < 0) { if (v) printf ("%d/%d: dwrite - ioctl(fd, XFS_IOC_DIOINFO) %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } #endif align = (__int64_t) diob.d_miniosz; lr = ((__int64_t) random() << 32) + random(); off = (off64_t) (lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off -= (off % align); lseek64(fd, off, SEEK_SET); len = (random() % (getpagesize() * 32)) + 1; len -= (len % align); if (len <= 0) len = align; else if (len > diob.d_maxiosz) len = diob.d_maxiosz; if ((e = posix_memalign((void **)&buf, diob.d_mem, len)) != 0) { fprintf(stderr, "posix_memalign: %s\n", strerror(e)); exit(1); } if (buf == NULL) { fprintf(stderr, "posix_memalign: buf is NULL\n"); exit(1); } off %= maxfsize; lseek64(fd, off, SEEK_SET); memset(buf, nameseq & 0xff, len); e = write(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) printf("%d/%d: dwrite %s [%lld,%ld] %d\n", procid, opno, f.path, (long long)off, (long int)len, e); free_pathname(&f); close(fd); } void fdatasync_f(int opno, long r) { int e; pathname_t f; int fd; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: fdatasync - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_WRONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: fdatasync - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } e = fdatasync(fd) < 0 ? errno : 0; if (v) printf("%d/%d: fdatasync %s %d\n", procid, opno, f.path, e); free_pathname(&f); close(fd); } #ifndef NO_XFS void freesp_f(int opno, long r) { int e; pathname_t f; int fd; struct xfs_flock64 fl; __s64 lr; __s64 off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: freesp - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDWR); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: freesp - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: freesp - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } lr = ((__s64) random() << 32) + random(); off = lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE); off %= maxfsize; memset(&fl, 0, sizeof(fl)); fl.l_whence = SEEK_SET; fl.l_start = off; fl.l_len = 0; e = ioctl(fd, XFS_IOC_FREESP64, &fl) < 0 ? errno : 0; if (v) printf("%d/%d: ioctl(XFS_IOC_FREESP64) %s %lld 0 %d\n", procid, opno, f.path, (long long)off, e); free_pathname(&f); close(fd); } #endif void fsync_f(int opno, long r) { int e; pathname_t f; int fd; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: fsync - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_WRONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: fsync - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } e = fsync(fd) < 0 ? errno : 0; if (v) printf("%d/%d: fsync %s %d\n", procid, opno, f.path, e); free_pathname(&f); close(fd); } void getdents_f(int opno, long r) { DIR *dir; pathname_t f; int v; init_pathname(&f); if (!get_fname(FT_DIRm, r, &f, NULL, NULL, &v)) append_pathname(&f, "."); dir = opendir_path(&f); check_cwd(); if (dir == NULL) { if (v) printf("%d/%d: getdents - can't open %s\n", procid, opno, f.path); free_pathname(&f); return; } while (readdir64(dir) != NULL) continue; if (v) printf("%d/%d: getdents %s 0\n", procid, opno, f.path); free_pathname(&f); closedir(dir); } void link_f(int opno, long r) { int e; pathname_t f; fent_t *fep; flist_t *flp; int id; pathname_t l; int parid; int v; int v1; init_pathname(&f); if (!get_fname(FT_NOTDIR, r, &f, &flp, NULL, &v1)) { if (v1) printf("%d/%d: link - no file\n", procid, opno); free_pathname(&f); return; } if (!get_fname(FT_DIRm, random(), NULL, NULL, &fep, &v)) parid = -1; else parid = fep->id; v |= v1; init_pathname(&l); e = generate_fname(fep, flp - flist, &l, &id, &v1); v |= v1; if (!e) { if (v) { fent_to_name(&l, &flist[FT_DIR], fep); printf("%d/%d: link - no filename from %s\n", procid, opno, l.path); } free_pathname(&l); free_pathname(&f); return; } e = link_path(&f, &l) < 0 ? errno : 0; check_cwd(); if (e == 0) add_to_flist(flp - flist, id, parid); if (v) printf("%d/%d: link %s %s %d\n", procid, opno, f.path, l.path, e); free_pathname(&l); free_pathname(&f); } void mkdir_f(int opno, long r) { int e; pathname_t f; fent_t *fep; int id; int parid; int v; int v1; if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) parid = -1; else parid = fep->id; init_pathname(&f); e = generate_fname(fep, FT_DIR, &f, &id, &v1); v |= v1; if (!e) { if (v) { fent_to_name(&f, &flist[FT_DIR], fep); printf("%d/%d: mkdir - no filename from %s\n", procid, opno, f.path); } free_pathname(&f); return; } e = mkdir_path(&f, 0777) < 0 ? errno : 0; check_cwd(); if (e == 0) add_to_flist(FT_DIR, id, parid); if (v) printf("%d/%d: mkdir %s %d\n", procid, opno, f.path, e); free_pathname(&f); } void mknod_f(int opno, long r) { int e; pathname_t f; fent_t *fep; int id; int parid; int v; int v1; if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) parid = -1; else parid = fep->id; init_pathname(&f); e = generate_fname(fep, FT_DEV, &f, &id, &v1); v |= v1; if (!e) { if (v) { fent_to_name(&f, &flist[FT_DIR], fep); printf("%d/%d: mknod - no filename from %s\n", procid, opno, f.path); } free_pathname(&f); return; } e = mknod_path(&f, S_IFCHR | 0444, 0) < 0 ? errno : 0; check_cwd(); if (e == 0) add_to_flist(FT_DEV, id, parid); if (v) printf("%d/%d: mknod %s %d\n", procid, opno, f.path, e); free_pathname(&f); } void read_f(int opno, long r) { char *buf; int e; pathname_t f; int fd; size_t len; __int64_t lr; off64_t off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: read - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: read - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: read - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } if (stb.st_size == 0) { if (v) printf("%d/%d: read - %s zero size\n", procid, opno, f.path); free_pathname(&f); close(fd); return; } lr = ((__int64_t) random() << 32) + random(); off = (off64_t) (lr % stb.st_size); lseek64(fd, off, SEEK_SET); len = (random() % (getpagesize() * 32)) + 1; buf = malloc(len); e = read(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) printf("%d/%d: read %s [%lld,%ld] %d\n", procid, opno, f.path, (long long)off, (long int)len, e); free_pathname(&f); close(fd); } void readlink_f(int opno, long r) { char buf[PATH_MAX]; int e; pathname_t f; int v; init_pathname(&f); if (!get_fname(FT_SYMm, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: readlink - no filename\n", procid, opno); free_pathname(&f); return; } e = readlink_path(&f, buf, PATH_MAX) < 0 ? errno : 0; check_cwd(); if (v) printf("%d/%d: readlink %s %d\n", procid, opno, f.path, e); free_pathname(&f); } void rename_f(int opno, long r) { fent_t *dfep; int e; pathname_t f; fent_t *fep; flist_t *flp; int id; pathname_t newf; int oldid; int parid; int v; int v1; init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, &flp, &fep, &v1)) { if (v1) printf("%d/%d: rename - no filename\n", procid, opno); free_pathname(&f); return; } if (!get_fname(FT_DIRm, random(), NULL, NULL, &dfep, &v)) parid = -1; else parid = dfep->id; v |= v1; init_pathname(&newf); e = generate_fname(dfep, flp - flist, &newf, &id, &v1); v |= v1; if (!e) { if (v) { fent_to_name(&f, &flist[FT_DIR], dfep); printf("%d/%d: rename - no filename from %s\n", procid, opno, f.path); } free_pathname(&newf); free_pathname(&f); return; } e = rename_path(&f, &newf) < 0 ? errno : 0; check_cwd(); if (e == 0) { if (flp - flist == FT_DIR) { oldid = fep->id; fix_parent(oldid, id); } del_from_flist(flp - flist, fep - flp->fents); add_to_flist(flp - flist, id, parid); } if (v) printf("%d/%d: rename %s to %s %d\n", procid, opno, f.path, newf.path, e); free_pathname(&newf); free_pathname(&f); } #ifndef NO_XFS void resvsp_f(int opno, long r) { int e; pathname_t f; int fd; struct xfs_flock64 fl; __s64 lr; __s64 off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: resvsp - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDWR); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: resvsp - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: resvsp - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } lr = ((__s64) random() << 32) + random(); off = lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE); off %= maxfsize; memset(&fl, 0, sizeof(fl)); fl.l_whence = SEEK_SET; fl.l_start = off; fl.l_len = (__s64) (random() % (1024 * 1024)); e = ioctl(fd, XFS_IOC_RESVSP64, &fl) < 0 ? errno : 0; if (v) printf("%d/%d: ioctl(XFS_IOC_RESVSP64) %s %lld %lld %d\n", procid, opno, f.path, (long long)off, (long long)fl.l_len, e); free_pathname(&f); close(fd); } #endif void rmdir_f(int opno, long r) { int e; pathname_t f; fent_t *fep; int v; init_pathname(&f); if (!get_fname(FT_DIRm, r, &f, NULL, &fep, &v)) { if (v) printf("%d/%d: rmdir - no directory\n", procid, opno); free_pathname(&f); return; } e = rmdir_path(&f) < 0 ? errno : 0; check_cwd(); if (e == 0) del_from_flist(FT_DIR, fep - flist[FT_DIR].fents); if (v) printf("%d/%d: rmdir %s %d\n", procid, opno, f.path, e); free_pathname(&f); } void stat_f(int opno, long r) { int e; pathname_t f; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: stat - no entries\n", procid, opno); free_pathname(&f); return; } e = lstat64_path(&f, &stb) < 0 ? errno : 0; check_cwd(); if (v) printf("%d/%d: stat %s %d\n", procid, opno, f.path, e); free_pathname(&f); } void symlink_f(int opno, long r) { int e; pathname_t f; fent_t *fep; int i; int id; int len; int parid; int v; int v1; char *val; if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) parid = -1; else parid = fep->id; init_pathname(&f); e = generate_fname(fep, FT_SYM, &f, &id, &v1); v |= v1; if (!e) { if (v) { fent_to_name(&f, &flist[FT_DIR], fep); printf("%d/%d: symlink - no filename from %s\n", procid, opno, f.path); } free_pathname(&f); return; } len = (int)(random() % PATH_MAX); val = malloc(len + 1); if (len) memset(val, 'x', len); val[len] = '\0'; for (i = 10; i < len - 1; i += 10) val[i] = '/'; e = symlink_path(val, &f) < 0 ? errno : 0; check_cwd(); if (e == 0) add_to_flist(FT_SYM, id, parid); free(val); if (v) printf("%d/%d: symlink %s %d\n", procid, opno, f.path, e); free_pathname(&f); } /* ARGSUSED */ void sync_f(int opno, long r) { sync(); if (verbose) printf("%d/%d: sync\n", procid, opno); } void truncate_f(int opno, long r) { int e; pathname_t f; __int64_t lr; off64_t off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: truncate - no filename\n", procid, opno); free_pathname(&f); return; } e = stat64_path(&f, &stb) < 0 ? errno : 0; check_cwd(); if (e > 0) { if (v) printf("%d/%d: truncate - stat64 %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } lr = ((__int64_t) random() << 32) + random(); off = lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE); off %= maxfsize; e = truncate64_path(&f, off) < 0 ? errno : 0; check_cwd(); if (v) printf("%d/%d: truncate %s %lld %d\n", procid, opno, f.path, (long long)off, e); free_pathname(&f); } void unlink_f(int opno, long r) { int e; pathname_t f; fent_t *fep; flist_t *flp; int v; init_pathname(&f); if (!get_fname(FT_NOTDIR, r, &f, &flp, &fep, &v)) { if (v) printf("%d/%d: unlink - no file\n", procid, opno); free_pathname(&f); return; } e = unlink_path(&f) < 0 ? errno : 0; check_cwd(); if (e == 0) del_from_flist(flp - flist, fep - flp->fents); if (v) printf("%d/%d: unlink %s %d\n", procid, opno, f.path, e); free_pathname(&f); } #ifndef NO_XFS void unresvsp_f(int opno, long r) { int e; pathname_t f; int fd; struct xfs_flock64 fl; __s64 lr; __s64 off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: unresvsp - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDWR); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: unresvsp - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: unresvsp - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } lr = ((__s64) random() << 32) + random(); off = lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE); off %= maxfsize; memset(&fl, 0, sizeof(fl)); fl.l_whence = SEEK_SET; fl.l_start = off; fl.l_len = (__s64) (random() % (1 << 20)); e = ioctl(fd, XFS_IOC_UNRESVSP64, &fl) < 0 ? errno : 0; if (v) printf("%d/%d: ioctl(XFS_IOC_UNRESVSP64) %s %lld %lld %d\n", procid, opno, f.path, (long long)off, (long long)fl.l_len, e); free_pathname(&f); close(fd); } #endif void write_f(int opno, long r) { char *buf; int e; pathname_t f; int fd; size_t len; __int64_t lr; off64_t off; struct stat64 stb; int v; init_pathname(&f); if (!get_fname(FT_REGm, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: write - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_WRONLY); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { if (v) printf("%d/%d: write - open %s failed %d\n", procid, opno, f.path, e); free_pathname(&f); return; } if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: write - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } lr = ((__int64_t) random() << 32) + random(); off = (off64_t) (lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; lseek64(fd, off, SEEK_SET); len = (random() % (getpagesize() * 32)) + 1; buf = malloc(len); memset(buf, nameseq & 0xff, len); e = write(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) printf("%d/%d: write %s [%lld,%ld] %d\n", procid, opno, f.path, (long long)off, (long int)len, e); free_pathname(&f); close(fd); } e2fsprogs-1.47.3-rc1/contrib/make-sparse.c000066400000000000000000000030471501560632700202300ustar00rootroot00000000000000/* * make-sparse.c --- make a sparse file from stdin * * Copyright 2004 by Theodore Ts'o. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */ #ifndef _LARGEFILE_SOURCE #define _LARGEFILE_SOURCE #endif #ifndef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE #endif #include #include #include #include #include #include #include int full_read(int fd, char *buf, size_t count) { int got, total = 0; int pass = 0; while (count > 0) { got = read(fd, buf, count); if (got == -1) { if ((errno == EINTR) || (errno == EAGAIN)) continue; return total ? total : -1; } if (got == 0) { if (pass++ >= 3) return total; continue; } pass = 0; buf += got; total += got; count -= got; } return total; } int main(int argc, char **argv) { int fd, got, i; int zflag = 0; char buf[1024]; if (argc != 2) { fprintf(stderr, "Usage: make-sparse out-file\n"); exit(1); } fd = open(argv[1], O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0777); if (fd < 0) { perror(argv[1]); exit(1); } while (1) { got = full_read(0, buf, sizeof(buf)); if (got == 0) break; if (got == sizeof(buf)) { for (i=0; i < sizeof(buf); i++) if (buf[i]) break; if (i == sizeof(buf)) { lseek(fd, sizeof(buf), SEEK_CUR); zflag = 1; continue; } } zflag = 0; write(fd, buf, got); } if (zflag) { lseek(fd, -1, SEEK_CUR); buf[0] = 0; write(fd, buf, 1); } return 0; } e2fsprogs-1.47.3-rc1/contrib/populate-extfs.sh000077500000000000000000000046341501560632700211760ustar00rootroot00000000000000#!/bin/sh # # This script uses debugfs command to populate the ext2/3/4 filesystem # from a given directory. # do_usage () { cat << _EOF Usage: populate-extfs.sh Create an ext2/ext3/ext4 filesystem from a directory or file source: The source directory or file device: The target device _EOF exit 1 } [ $# -ne 2 ] && do_usage SRCDIR=${1%%/} DEVICE=$2 # Find where is the debugfs command if not found in the env. if [ -z "$DEBUGFS" ]; then CONTRIB_DIR=$(dirname $(readlink -f $0)) DEBUGFS="$CONTRIB_DIR/../debugfs/debugfs" fi { CWD="/" find $SRCDIR | while read FILE; do TGT="${FILE##*/}" DIR="${FILE#$SRCDIR}" DIR="${DIR%$TGT}" # Skip the root dir [ ! -z "$DIR" ] || continue [ ! -z "$TGT" ] || continue if [ "$DIR" != "$CWD" ]; then echo "cd $DIR" CWD="$DIR" fi # Only stat once since stat is a time consuming command STAT=$(stat -c "TYPE=\"%F\";DEVNO=\"0x%t 0x%T\";MODE=\"%f\";U=\"%u\";G=\"%g\"" $FILE) eval $STAT case $TYPE in "directory") echo "mkdir $TGT" ;; "regular file" | "regular empty file") echo "write $FILE $TGT" ;; "symbolic link") LINK_TGT=$(readlink $FILE) echo "symlink $TGT $LINK_TGT" ;; "block special file") echo "mknod $TGT b $DEVNO" ;; "character special file") echo "mknod $TGT c $DEVNO" ;; "fifo") echo "mknod $TGT p" ;; *) echo "Unknown/unhandled file type '$TYPE' file: $FILE" 1>&2 ;; esac # Set the file mode echo "sif $TGT mode 0x$MODE" # Set uid and gid echo "sif $TGT uid $U" echo "sif $TGT gid $G" done # Handle the hard links. # Save the hard links to a file, use the inode number as the filename, for example: # If a and b's inode number is 6775928, save a and b to /tmp/tmp.VrCwHh5gdt/6775928. INODE_DIR=`mktemp -d` || exit 1 for i in `find $SRCDIR -type f -links +1 -printf 'INODE=%i###FN=%p\n'`; do eval `echo $i | sed 's$###$ $'` echo ${FN#$SRCDIR} >>$INODE_DIR/$INODE done # Use the debugfs' ln and "sif links_count" to handle them. for i in `ls $INODE_DIR`; do # The link source SRC=`head -1 $INODE_DIR/$i` # Remove the files and link them again except the first one for TGT in `sed -n -e '1!p' $INODE_DIR/$i`; do echo "rm $TGT" echo "ln $SRC $TGT" done LN_CNT=`cat $INODE_DIR/$i | wc -l` # Set the links count echo "sif $SRC links_count $LN_CNT" done rm -fr $INODE_DIR } | $DEBUGFS -w -f - $DEVICE e2fsprogs-1.47.3-rc1/contrib/python-uuid/000077500000000000000000000000001501560632700201355ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/contrib/python-uuid/setup.py000077500000000000000000000004741501560632700216570ustar00rootroot00000000000000#!/usr/bin/python from distutils.core import setup, Extension uuid = Extension('e2fsprogs_uuid', sources = ['uuid.c'], libraries = ['uuid']) setup (name = 'e2fsprogs_uuid', version = '1.0', description = 'This is python uuid interface', ext_modules = [uuid]) e2fsprogs-1.47.3-rc1/contrib/python-uuid/test.py000077500000000000000000000004671501560632700215000ustar00rootroot00000000000000#!/usr/bin/python import e2fsprogs_uuid import time print "Generating uuid...", try: time = time.time() u = e2fsprogs_uuid.generate() except: u = "FAIL" print u, "...", time print "Calling generate with param...", try: e2fsprogs_uuid.generate("param") print "FAIL." except: print "OK" e2fsprogs-1.47.3-rc1/contrib/python-uuid/uuid.c000066400000000000000000000007761501560632700212610ustar00rootroot00000000000000#include #include #include static PyObject * _uuid_generate(PyObject *self, PyObject *args) { uuid_t u; char uuid[37]; if (!PyArg_ParseTuple(args, "")) return NULL; uuid_generate(u); uuid_unparse(u, uuid); return Py_BuildValue("s", uuid); } static PyMethodDef _uuid_methods[] = { {"generate", _uuid_generate, METH_VARARGS, "Generate UUID"}, {NULL, NULL, 0, NULL} }; void inite2fsprogs_uuid(void) { (void) Py_InitModule("e2fsprogs_uuid", _uuid_methods); } e2fsprogs-1.47.3-rc1/contrib/setup-schroot000077500000000000000000000020021501560632700204070ustar00rootroot00000000000000#!/bin/bash # # This script sets up a schroot suitable for building e2fsprogs # on a Debian portable box while [ "$1" != "" ]; do case "$1" in --base) shift BASE_CHROOT="$1" ;; --chroot) shift CHROOT="$1" ;; --help|help) echo "Usage: setup-schroot [--base ] [--chroot ]" exit 0 ;; *) echo "unknown option: $1" exit 1 ;; esac shift done if test -z "$BASE_CHROOT" ; then BASE_CHROOT=sid fi if test -z "$CHROOT" ; then CHROOT="$USER-$BASE_CHROOT" fi echo "Setting up $CHROOT using $BASE_CHROOT..." schroot -b -n "$CHROOT" -c "$BASE_CHROOT" dd-schroot-cmd -c "$CHROOT" apt-get update dd-schroot-cmd -c "$CHROOT" -y apt-get upgrade dd-schroot-cmd -c "$CHROOT" -y apt-get build-dep e2fsprogs dd-schroot-cmd -c "$CHROOT" -y apt-get install git gdb emacs-nox lintian \ acl libreadline-dev dh-exec cron dd-schroot-cmd -c "$CHROOT" -y apt-get install udev systemd echo " " echo "Start chroot by running: " echo "schroot -r -c $CHROOT" echo " " e2fsprogs-1.47.3-rc1/contrib/spd_readdir.c000066400000000000000000000250441501560632700203010ustar00rootroot00000000000000/* * readdir accelerator * * (C) Copyright 2003, 2004, 2008 by Theodore Ts'o. * * 2008-06-08 Modified by Ross Boylan * Added support for readdir_r and readdir64_r calls. Note * this has not been tested on anything other than GNU/Linux i386, * and that the regular readdir wrapper will take slightly more * space than Ted's original since it now includes a lock. * * Compile using the command: * * gcc -o spd_readdir.so -shared -fpic spd_readdir.c -ldl * * Use it by setting the LD_PRELOAD environment variable: * * export LD_PRELOAD=/usr/local/sbin/spd_readdir.so * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% * */ #define ALLOC_STEPSIZE 100 #define MAX_DIRSIZE 0 #define DEBUG /* Util we autoconfiscate spd_readdir... */ #define HAVE___SECURE_GETENV 1 #define HAVE_PRCTL 1 #define HAVE_SYS_PRCTL_H 1 #ifdef DEBUG #define DEBUG_DIR(x) {if (do_debug) { x; }} #else #define DEBUG_DIR(x) #endif #define _GNU_SOURCE #define __USE_LARGEFILE64 #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_PRCTL_H #include #else #define PR_GET_DUMPABLE 3 #endif #include struct dirent_s { unsigned long long d_ino; long long d_off; unsigned short int d_reclen; unsigned char d_type; char *d_name; }; struct dir_s { DIR *dir; pthread_mutex_t lock; /* Mutex lock for this structure. */ int num; int max; struct dirent_s *dp; int pos; int direct; struct dirent ret_dir; struct dirent64 ret_dir64; }; static int (*real_closedir)(DIR *dir) = 0; static DIR *(*real_opendir)(const char *name) = 0; static DIR *(*real_fdopendir)(int fd) = 0; static void *(*real_rewinddir)(DIR *dirp) = 0; static struct dirent *(*real_readdir)(DIR *dir) = 0; static int (*real_readdir_r)(DIR *dir, struct dirent *entry, struct dirent **result) = 0; static struct dirent64 *(*real_readdir64)(DIR *dir) = 0; static int (*real_readdir64_r)(DIR *dir, struct dirent64 *entry, struct dirent64 **result) = 0; static off_t (*real_telldir)(DIR *dir) = 0; static void (*real_seekdir)(DIR *dir, off_t offset) = 0; static int (*real_dirfd)(DIR *dir) = 0; static unsigned long max_dirsize = MAX_DIRSIZE; static int num_open = 0; #ifdef DEBUG static int do_debug = 0; #endif static char *safe_getenv(const char *arg) { if ((getuid() != geteuid()) || (getgid() != getegid())) return NULL; #if HAVE_PRCTL if (prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) == 0) return NULL; #else #if (defined(linux) && defined(SYS_prctl)) if (syscall(SYS_prctl, PR_GET_DUMPABLE, 0, 0, 0, 0) == 0) return NULL; #endif #endif #if HAVE___SECURE_GETENV return __secure_getenv(arg); #else return getenv(arg); #endif } static void setup_ptr() { char *cp; real_opendir = dlsym(RTLD_NEXT, "opendir"); real_fdopendir = dlsym(RTLD_NEXT, "fdopendir"); real_closedir = dlsym(RTLD_NEXT, "closedir"); real_rewinddir = dlsym(RTLD_NEXT, "rewinddir"); real_readdir = dlsym(RTLD_NEXT, "readdir"); real_readdir_r = dlsym(RTLD_NEXT, "readdir_r"); real_readdir64 = dlsym(RTLD_NEXT, "readdir64"); real_readdir64_r = dlsym(RTLD_NEXT, "readdir64_r"); real_telldir = dlsym(RTLD_NEXT, "telldir"); real_seekdir = dlsym(RTLD_NEXT, "seekdir"); real_dirfd = dlsym(RTLD_NEXT, "dirfd"); if ((cp = safe_getenv("SPD_READDIR_MAX_SIZE")) != NULL) { max_dirsize = atol(cp); } #ifdef DEBUG if (safe_getenv("SPD_READDIR_DEBUG")) { printf("initialized!\n"); do_debug++; } #endif } static void free_cached_dir(struct dir_s *dirstruct) { int i; pthread_mutex_destroy(&(dirstruct->lock)); if (!dirstruct->dp) return; for (i=0; i < dirstruct->num; i++) { free(dirstruct->dp[i].d_name); } free(dirstruct->dp); dirstruct->dp = 0; dirstruct->max = dirstruct->num = 0; } static int ino_cmp(const void *a, const void *b) { const struct dirent_s *ds_a = (const struct dirent_s *) a; const struct dirent_s *ds_b = (const struct dirent_s *) b; ino_t i_a, i_b; i_a = ds_a->d_ino; i_b = ds_b->d_ino; if (ds_a->d_name[0] == '.') { if (ds_a->d_name[1] == 0) i_a = 0; else if ((ds_a->d_name[1] == '.') && (ds_a->d_name[2] == 0)) i_a = 1; } if (ds_b->d_name[0] == '.') { if (ds_b->d_name[1] == 0) i_b = 0; else if ((ds_b->d_name[1] == '.') && (ds_b->d_name[2] == 0)) i_b = 1; } return (i_a - i_b); } static struct dir_s *alloc_dirstruct(DIR *dir) { struct dir_s *dirstruct; static pthread_mutexattr_t mutexattr; mutexattr.__align = PTHREAD_MUTEX_RECURSIVE; dirstruct = malloc(sizeof(struct dir_s)); if (dirstruct) memset(dirstruct, 0, sizeof(struct dir_s)); dirstruct->dir = dir; pthread_mutex_init(&(dirstruct->lock), &mutexattr); return dirstruct; } static void cache_dirstruct(struct dir_s *dirstruct) { struct dirent_s *ds, *dnew; struct dirent64 *d; while ((d = (*real_readdir64)(dirstruct->dir)) != NULL) { if (dirstruct->num >= dirstruct->max) { dirstruct->max += ALLOC_STEPSIZE; DEBUG_DIR(printf("Reallocating to size %d\n", dirstruct->max)); dnew = realloc(dirstruct->dp, dirstruct->max * sizeof(struct dir_s)); if (!dnew) goto nomem; dirstruct->dp = dnew; } ds = &dirstruct->dp[dirstruct->num++]; ds->d_ino = d->d_ino; ds->d_off = d->d_off; ds->d_reclen = d->d_reclen; ds->d_type = d->d_type; if ((ds->d_name = malloc(strlen(d->d_name)+1)) == NULL) { dirstruct->num--; goto nomem; } strcpy(ds->d_name, d->d_name); DEBUG_DIR(printf("readdir: %lu %s\n", (unsigned long) d->d_ino, d->d_name)); } qsort(dirstruct->dp, dirstruct->num, sizeof(struct dirent_s), ino_cmp); return; nomem: DEBUG_DIR(printf("No memory, backing off to direct readdir\n")); free_cached_dir(dirstruct); dirstruct->direct = 1; } DIR *opendir(const char *name) { DIR *dir; struct dir_s *dirstruct; struct stat st; if (!real_opendir) setup_ptr(); DEBUG_DIR(printf("Opendir(%s) (%d open)\n", name, num_open++)); dir = (*real_opendir)(name); if (!dir) return NULL; dirstruct = alloc_dirstruct(dir); if (!dirstruct) { (*real_closedir)(dir); errno = -ENOMEM; return NULL; } if (max_dirsize && (stat(name, &st) == 0) && (st.st_size > max_dirsize)) { DEBUG_DIR(printf("Directory size %ld, using direct readdir\n", st.st_size)); dirstruct->direct = 1; return (DIR *) dirstruct; } cache_dirstruct(dirstruct); return ((DIR *) dirstruct); } DIR *fdopendir(int fd) { DIR *dir; struct dir_s *dirstruct; struct stat st; if (!real_fdopendir) setup_ptr(); DEBUG_DIR(printf("fdopendir(%d) (%d open)\n", fd, num_open++)); dir = (*real_fdopendir)(fd); if (!dir) return NULL; dirstruct = alloc_dirstruct(dir); if (!dirstruct) { (*real_closedir)(dir); errno = -ENOMEM; return NULL; } if (max_dirsize && (fstat(fd, &st) == 0) && (st.st_size > max_dirsize)) { DEBUG_DIR(printf("Directory size %ld, using direct readdir\n", st.st_size)); dirstruct->dir = dir; dirstruct->direct = 1; return (DIR *) dirstruct; } cache_dirstruct(dirstruct); return ((DIR *) dirstruct); } int closedir(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; DEBUG_DIR(printf("Closedir (%d open)\n", --num_open)); if (dirstruct->dir) (*real_closedir)(dirstruct->dir); free_cached_dir(dirstruct); free(dirstruct); return 0; } struct dirent *readdir(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; struct dirent_s *ds; if (dirstruct->direct) return (*real_readdir)(dirstruct->dir); if (dirstruct->pos >= dirstruct->num) return NULL; ds = &dirstruct->dp[dirstruct->pos++]; dirstruct->ret_dir.d_ino = ds->d_ino; dirstruct->ret_dir.d_off = ds->d_off; dirstruct->ret_dir.d_reclen = ds->d_reclen; dirstruct->ret_dir.d_type = ds->d_type; strncpy(dirstruct->ret_dir.d_name, ds->d_name, sizeof(dirstruct->ret_dir.d_name)); return (&dirstruct->ret_dir); } int readdir_r(DIR *dir, struct dirent *entry, struct dirent **result) { struct dir_s *dirstruct = (struct dir_s *) dir; struct dirent_s *ds; if (dirstruct->direct) return (*real_readdir_r)(dirstruct->dir, entry, result); pthread_mutex_lock(&(dirstruct->lock)); if (dirstruct->pos >= dirstruct->num) { *result = NULL; } else { ds = &dirstruct->dp[dirstruct->pos++]; entry->d_ino = ds->d_ino; entry->d_off = ds->d_off; entry->d_reclen = ds->d_reclen; entry->d_type = ds->d_type; strncpy(entry->d_name, ds->d_name, sizeof(entry->d_name)); *result = entry; } pthread_mutex_unlock(&(dirstruct->lock)); return 0; } struct dirent64 *readdir64(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; struct dirent_s *ds; if (dirstruct->direct) return (*real_readdir64)(dirstruct->dir); if (dirstruct->pos >= dirstruct->num) return NULL; ds = &dirstruct->dp[dirstruct->pos++]; dirstruct->ret_dir64.d_ino = ds->d_ino; dirstruct->ret_dir64.d_off = ds->d_off; dirstruct->ret_dir64.d_reclen = ds->d_reclen; dirstruct->ret_dir64.d_type = ds->d_type; strncpy(dirstruct->ret_dir64.d_name, ds->d_name, sizeof(dirstruct->ret_dir64.d_name)); return (&dirstruct->ret_dir64); } int readdir64_r (DIR *__restrict dir, struct dirent64 *__restrict entry, struct dirent64 **__restrict result) { struct dir_s *dirstruct = (struct dir_s *) dir; struct dirent_s *ds; if (dirstruct->direct) return (*real_readdir64_r)(dir, entry, result); pthread_mutex_lock(&(dirstruct->lock)); if (dirstruct->pos >= dirstruct->num) { *result = NULL; } else { ds = &dirstruct->dp[dirstruct->pos++]; entry->d_ino = ds->d_ino; entry->d_off = ds->d_off; entry->d_reclen = ds->d_reclen; entry->d_type = ds->d_type; strncpy(entry->d_name, ds->d_name, sizeof(entry->d_name)); *result = entry; } pthread_mutex_unlock(&(dirstruct->lock)); return 0; } off_t telldir(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; if (dirstruct->direct) return (*real_telldir)(dirstruct->dir); return ((off_t) dirstruct->pos); } void seekdir(DIR *dir, off_t offset) { struct dir_s *dirstruct = (struct dir_s *) dir; if (dirstruct->direct) { (*real_seekdir)(dirstruct->dir, offset); return; } dirstruct->pos = offset; } void rewinddir(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; (*real_rewinddir)(dirstruct->dir); if (dirstruct->direct) return; pthread_mutex_lock(&(dirstruct->lock)); dirstruct->pos = 0; free_cached_dir(dirstruct); cache_dirstruct(dirstruct); pthread_mutex_unlock(&(dirstruct->lock)); } int dirfd(DIR *dir) { struct dir_s *dirstruct = (struct dir_s *) dir; int fd = (*real_dirfd)(dirstruct->dir); DEBUG_DIR(printf("dirfd %d, %p\n", fd, real_dirfd)); return fd; } e2fsprogs-1.47.3-rc1/debian/000077500000000000000000000000001501560632700154325ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/.gitignore000066400000000000000000000000111501560632700174120ustar00rootroot00000000000000!patches e2fsprogs-1.47.3-rc1/debian/attic/000077500000000000000000000000001501560632700165365ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/attic/comerrg-dev.info000066400000000000000000000001671501560632700216310ustar00rootroot00000000000000DESCR="The Common Error Description library." SECTION_MATCH="Development" SECTION_NAME="Development" FILE=com_err.info e2fsprogs-1.47.3-rc1/debian/attic/comerrg-dev.menu000066400000000000000000000006661501560632700216460ustar00rootroot00000000000000?package(comerrg-dev):needs="dwww" section="Apps/Programming"\ title="The com_err library" \ longtitle="The Common Error Description library"\ description="libcomerr is an attempt to present a common error-handling mechanism to \ manipulate the most common form of error code in a fashion that does not \ have the problems identified with mechanisms commonly in use." \ command="/usr/doc/comerrg-dev/html-info/com_err_toc.html" e2fsprogs-1.47.3-rc1/debian/attic/e2fslibsg-dev.info000066400000000000000000000002111501560632700220410ustar00rootroot00000000000000DESCR="Library of routines to manipulate an ext2 filesystem." SECTION_MATCH="Development" SECTION_NAME="Development" FILE=libext2fs.info e2fsprogs-1.47.3-rc1/debian/attic/e2fslibsg-dev.menu000066400000000000000000000003571501560632700220650ustar00rootroot00000000000000?package(e2fslibsg-dev):needs="dwww" section="Apps/Programming"\ title="The ext2fs library." \ longtitle="A library to handle low-level structures in an ext2 filesystem"\ command="/usr/doc/e2fslibsg-dev/html-info/libext2fs_toc.html" e2fsprogs-1.47.3-rc1/debian/attic/libs/000077500000000000000000000000001501560632700174675ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/attic/libs/comerr2g.files000066400000000000000000000000521501560632700222300ustar00rootroot00000000000000lib/libcom_err.so.?.* lib/libcom_err.so.? e2fsprogs-1.47.3-rc1/debian/attic/libs/control000066400000000000000000000105241501560632700210740ustar00rootroot00000000000000Source: e2fsprogs Section: base Priority: required Maintainer: Yann Dirson Standards-Version: 2.4.0.0 Package: e2fsprogs Essential: yes Depends: ${shlibs:Depends} Conflicts: e2fsprogsg, dump (<< 0.4b4-4), quota (<< 1.55-8.1) Architecture: any Description: The EXT2 file system utilities. EXT2 stands for "Extended Filesystem", version 2. It's the main filesystem type used for hard disks on Debian and other Linux systems. . This package contains programs for creating, checking, and maintaining EXT2 filesystems, and the generic `fsck' wrapper. . This release may break older versions of dump and quota. Package: comerr2g Depends: ${shlibs:Depends} Conflicts: e2fsprogs (<< 1.10-6), comerr2 Architecture: any Description: The Common Error Description library - shared libraries. libcomerr is an attempt to present a common error-handling mechanism to manipulate the most common form of error code in a fashion that does not have the problems identified with mechanisms commonly in use. . It is mainly used by the EXT2-filesystem tools. Package: ss2g Depends: ${shlibs:Depends} Conflicts: e2fsprogs (<< 1.10-6), ss2 Architecture: any Description: "Sub-System" library for simple command-line interface parsing - shared libs This package contains the shared libs to support command-line interface parsers generated with the ssg-dev package. . It was originally inspired by the Multics SubSystem library. Package: e2fslibsg Depends: ${shlibs:Depends} Provides: ext2fs2g, e2p2g, uuid1g Conflicts: e2fsprogs (<= 1.10-7) Architecture: any Description: The EXT2 file system shared libs. EXT2 stands for "Extended Filesystem", version 2. It's the filesystem type used for hard disks on Debian and other Linux systems. . This package contains shared libraries needed by the utility programs. Package: comerrg-dev Section: devel Priority: extra Depends: ${libcdev:Depends}, comerr2g Suggests: doc-base Conflicts: e2fsprogs (<< 1.10-6), comerr-dev Architecture: any Description: The Common Error Description library - headers and static libraries. libcomerr is an attempt to present a common error-handling mechanism to manipulate the most common form of error code in a fashion that does not have the problems identified with mechanisms commonly in use. Package: ssg-dev Section: devel Priority: extra Depends: ${libcdev:Depends}, ss2g Conflicts: e2fsprogs (<< 1.10-6), ss-dev Architecture: any Description: "Sub-System" library for simple command-line interface parsing - devel. files This package includes a tool that parses a command table to generate a simple command-line interface parser, the include files needed to compile and use it, and the static libs. . It was originally inspired by the Multics SubSystem library. Package: e2fslibsg-dev Section: devel Priority: extra Depends: ${libcdev:Depends}, e2fslibsg, comerrg-dev Suggests: doc-base Provides: ext2fsg-dev, e2pg-dev, uuidg-dev Conflicts: e2fsprogs (<< 1.10-6), e2fslibs-dev Architecture: any Description: The headers and static libraries for ext2fs-aware tools-development. EXT2FS stands for "Extended Filesystem", version 2. It's the filesystem type used for hard disks on Debian and other Linux systems. . This package contains the headers and shared libraries needed to compile ext2fs-aware programs. Only programmers that really manipulate features specific to the ext2 filesystem will need this. Most programmers will use the generic filesystem-independent interface from libc. . It also contains dev files for 2 other libs (e2p and uuid) used by the e2fsprogs, but which are not yet packaged all by themselves because they lack documentation. They may also lack some support files, by I can't really know until someone uses them... . libe2p is for user-level e2fsprogs commands. It's used by dumpe2fs, chattr, and lsattr. Functions in libe2p typically have two characteristics (a) don't require that block device containing the filesystem be opened directly (functions in libext2fs do), and (b) libe2p typically contains printf statements or parse user input, and so have more internationalization issues. . libuuid generates and parses 128-bit universally unique id's (UUID's), using a standard which is blessed by both Microsoft and DCE, and is being proposed as an internet standard. See the internet-draft: . draft-leach-uuids-guids-01.txt . for more information. e2fsprogs-1.47.3-rc1/debian/attic/libs/e2fslibsg.files000066400000000000000000000000541501560632700223720ustar00rootroot00000000000000lib/*.so.?.* lib/*.so.? usr/doc/e2fslibsg/* e2fsprogs-1.47.3-rc1/debian/attic/libs/rules000066400000000000000000000134331501560632700205500ustar00rootroot00000000000000#! /usr/bin/make -f # -*- makefile -*- # # Invoke each target with `./debian/rules '. All targets should be # invoked with the package root as the current directory. # # The `binary' target must be run as root, as it needs to install files with # specific ownerships. # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 package = e2fsprogs ARCH = $(shell dpkg --print-architecture) # find the version for the main package, from changelog file MAIN_VERSION = $(shell head -1 debian/changelog | cut '-d ' -f 2 | sed 's/[()]//g') # find versions for libraries going into their own packages, from their Makefile.in's COMERR_VERSION = $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3) COMERR_MAJOR = $(word 1,$(subst ., ,$(COMERR_VERSION))) SS_VERSION = $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3) SS_MAJOR = $(word 1,$(subst ., ,$(SS_VERSION))) topdir = $(shell pwd) debdir = $(topdir)/debian maindir = $(debdir)/tmp builddir = $(topdir)/builddir docdir = $(maindir)/usr/doc/$(package) SUBPACKAGES_DIRS = tmp e2fslibsg e2fslibsg-dev comerr$(COMERR_MAJOR)g comerrg-dev \ ss$(SS_MAJOR)g ssg-dev installdoc = install -m 644 installbin = install -m 755 ifeq ($(ARCH),alpha) CCOPTS = -g -O2 -fsigned-char -DHAVE_NETINET_IN_H LIBC-DEV = libc6.1-dev else CCOPTS = -g -O2 -fsigned-char LIBC-DEV = libc6-dev endif build: configured dh_testdir make -C $(builddir) make -C $(builddir)/misc findsuper cd doc && texi2html -split_chapter libext2fs.texinfo cd lib/et && texi2html -split_chapter -expandinfo com_err.texinfo touch build configured: dh_testdir mkdir -p $(builddir) cd $(builddir) && CFLAGS="$(CFLAGS)" \ ../configure --enable-elf-shlibs --enable-dynamic-e2fsck \ --with-ccopts="$(CCOPTS)" touch configured clean: dh_testdir rm -f build configured install -make -C $(builddir) -i distclean rm -rf $(builddir) rm -f doc/libext2fs_*.html lib/et/com_err_*.html dh_clean binary-indep: build # no arch-independant debs. binary-arch: build dh_testversion 0.56 # == 0.53 + fixes dh_testdir -a dh_testroot -a dh_clean -a -k dh_installdirs -a make -C $(builddir) install DESTDIR=$(maindir) install -m 755 $(builddir)/misc/findsuper $(maindir)/sbin # static libs and .h files make -C $(builddir) install-libs DESTDIR=$(maindir) install -m 644 $(builddir)/lib/ss/ss_err.h $(maindir)/usr/include/ss/ # fix and install compile_et script sed s%$(topdir)/lib/et%/usr/share/comerr% \ <$(builddir)/lib/et/compile_et \ >$(debdir)/comerrg-dev/usr/bin/compile_et chmod 755 $(debdir)/comerrg-dev/usr/bin/compile_et # add support files for compile_et install -m 644 lib/et/et_c.awk lib/et/et_h.awk \ $(debdir)/comerrg-dev/usr/share/comerr/ # fix and install mk_cmds script sed s%$(topdir)/lib/ss%/usr/share/ss% \ <$(builddir)/lib/ss/mk_cmds \ >$(debdir)/ssg-dev/usr/bin/mk_cmds chmod 755 $(debdir)/ssg-dev/usr/bin/mk_cmds # add support files for mk_cmds install -m 644 lib/ss/ct_c.awk lib/ss/ct_c.sed \ $(debdir)/ssg-dev/usr/share/ss/ # docs mkdir -p $(debdir)/e2fslibsg-dev/usr/doc/e2fslibsg ln -sf e2fslibsg $(debdir)/e2fslibsg-dev/usr/doc/e2fslibsg-dev mkdir -p $(maindir)/usr/doc/e2fslibsg ln -sf e2fslibsg $(maindir)/usr/doc/e2fsprogs mkdir -p $(debdir)/comerrg-dev/usr/doc/comerr$(COMERR_MAJOR)g ln -sf comerr$(COMERR_MAJOR)g $(debdir)/comerrg-dev/usr/doc/comerrg-dev mkdir -p $(debdir)/ssg-dev/usr/doc/ss$(SS_MAJOR)g ln -sf ss$(SS_MAJOR)g $(debdir)/ssg-dev/usr/doc/ssg-dev dh_installdocs -a # HTML docs install -d $(debdir)/e2fslibsg-dev/usr/doc/e2fslibsg-dev/html-info/ install -p $(topdir)/doc/libext2fs_*.html \ $(debdir)/e2fslibsg-dev/usr/doc/e2fslibsg-dev/html-info/ install -d $(debdir)/comerrg-dev/usr/doc/comerrg-dev/html-info/ install -p $(topdir)/lib/et/com_err_*.html \ $(debdir)/comerrg-dev/usr/doc/comerrg-dev/html-info/ # texinfo docs install -p $(topdir)/doc/libext2fs.texinfo \ $(debdir)/e2fslibsg-dev/usr/doc/e2fslibsg/libext2fs.texi install -p $(topdir)/lib/et/com_err.texinfo \ $(debdir)/comerrg-dev/usr/doc/comerr2g/com_err.texi # doc-base support install -d $(debdir)/e2fslibsg-dev/usr/share/doc-base/ install -p -m 644 $(debdir)/libext2fs.docbase \ $(debdir)/e2fslibsg-dev/usr/share/doc-base/libext2fs install -d $(debdir)/comerrg-dev/usr/share/doc-base/ install -p -m 644 $(debdir)/com_err.docbase \ $(debdir)/comerrg-dev/usr/share/doc-base/com_err # examples dh_installexamples -a # dh_installmanpages still makes a mess as of 0.54 (see below dh_movefiles) install -p $(topdir)/lib/et/compile_et.1 $(maindir)/usr/man/man1/ install -d $(maindir)/usr/man/man3/ install -p $(topdir)/lib/et/com_err.3 $(maindir)/usr/man/man3/ ln -s e2fsck.8 $(maindir)/usr/man/man8/fsck.ext2.8 ln -s mke2fs.8 $(maindir)/usr/man/man8/mkfs.ext2.8 dh_movefiles -a # cleanup empty dirs cd $(maindir) && rmdir usr/man/cat? bin lib usr/include/* usr/include \ usr/info usr/lib usr/man/man3 usr/doc/e2fslibsg # dh_installmenu -a # broken + useless in 0.52 # dh_installmanpages -a dh_undocumented -a dh_installchangelogs -pe2fslibsg -pcomerr$(COMERR_MAJOR)g -pss$(SS_MAJOR)g ChangeLog dh_strip -a dh_compress -a dh_fixperms -a echo "libcdev:Depends=$(LIBC-DEV)" > debian/comerrg-dev.substvars echo "libcdev:Depends=$(LIBC-DEV)" > debian/ssg-dev.substvars echo "libcdev:Depends=$(LIBC-DEV)" > debian/e2fslibsg-dev.substvars dh_installdeb -a LD_LIBRARY_PATH=$(builddir)/lib:/lib:/usr/lib \ dh_shlibdeps -a dh_gencontrol -u '-isp' -pe2fsprogs -pe2fslibsg -pe2fslibsg-dev dh_gencontrol -u '-isp' -pcomerr$(COMERR_MAJOR)g -pcomerrg-dev \ -u '-v$(COMERR_VERSION)-$(MAIN_VERSION)' dh_gencontrol -u '-isp' -pss$(SS_MAJOR)g -pssg-dev \ -u '-v$(SS_VERSION)-$(MAIN_VERSION)' dh_makeshlibs -a # dh_du -a dh_md5sums -a dh_builddeb -a binary: binary-indep binary-arch .PHONY: binary binary-arch binary-indep clean checkroot e2fsprogs-1.47.3-rc1/debian/attic/libs/ss2g.files000066400000000000000000000000401501560632700213630ustar00rootroot00000000000000lib/libss.so.?.* lib/libss.so.? e2fsprogs-1.47.3-rc1/debian/changelog000066400000000000000000007361011501560632700173140ustar00rootroot00000000000000e2fsprogs (1.47.3~rc1-1) unstable; urgency=medium * Mke2fs -d can now copy the fs-verity metadata and chattr flags into newly created file system. * Many fuse2fs improvements and bug fixes - Add support for XATTR_CREATE and XATTR_REPLACE flags in setxattr() - Add support for FALLOC_FL_ZERO_RANGE. - Add support to fuse2fs for the setting file attributes via fsxattr, including support for nanosecond timestamps. - Add support to set newer chattr flags. - Fix fuse2fs support for O_APPEND, O_TRUNC, POSIX ACLs, and the immutable flag - Remove the ea_inode when deleting the last file using the ea_inode - Update timestamps after mkdir() and symlink() operations - Fix error code handling for fallocate(), truncate() and removexattr(). - Improve handling of corrupted file systems - Refuse to handle renameat2's RENAME_EXCHA?NGE or RENAME_WHITEOUT flags instead of doing something random - Avoid clearing the setgid bit in op_chmod when file's group ownership the calling process's group list (instead of just the primary group id). - Align with the kernel's behaviors: + clearing post-EOF on truncation + validating FITRIM's parameters consistently with how the kernel does things + how the "ro" mount option will replay the journal + only supporting the xattr namespaces supported by the kernel + clamping timestamps to the minimum and maximum value supported by the on-disk format + optionally delegating access control decisions to the kernel - Don't mount file systems which have features that fuse2fs can't deal with. - Return inode and type information in readdir() - Use the actal inode numbers instead of asking fuse to make up inode numbers - Use a larger disk cache to improve performance and optionally use Direct I/O. * Add mke2fs.conf knobs to control whether the RAID stripe or stride sizes from the storage device information depending on whether the storage device is a rotational or non-rotational device. By default don't set the RAID stripe size for non-rotational devices. * Fix "e2fsck -E unshare_blocks" to clear the shared_blocks flag when there are no shared blocks to clear * Fix "e2fsck -n" to not abort when it trips across an EA inode which is not referenced by any inodes in the file system. * Fix debugfs's dump and rdump commands to avoid looping forever when it runs across an I/O error or corupt filesystem metadata. * Fix debugfs's dirsearch command on big-endian systems. * Optimize ext2fs_extent_set_bmap() to avoid fragmenting the extent tree. This fixes a problem where resize2fs is trying to relocate all of the blocks in a file leading to the extent tree doubling in size, and potentially leading to a corrupted extent tree. * Fix potential livelock bug in the unix_io manager. * Fix invaidation support in the unix_io manager. * Various man page cleanups. * Improve performance in e2fsck when replaying a journal with a large number of revoke blocks (which can be the case on Lustre servers). * Improve tune2fs's performance by avoiding scanning the file system to update quota inodes in cases when it's not necessary. * Update Dutch, Malay, Portuguese, and Serbian translations. -- Theodore Y. Ts'o Wed, 28 May 2025 08:50:19 -0400 e2fsprogs (1.47.2-1) unstable; urgency=medium * New upstream version * Update Chinese, Czech, French, Malay, Polish, Romainian, Spanish, Swedish, and Ukrainian translations. * Teach dumpe2fs and e2mmpstatus to support LABEL= and UUID= specifiers since the e2mmpstatus man page claims those specifiers are supported. * Suppress mke2fs's "Creating regular file" message when the -q option is in force. * Add Suggests: libarchive13t64 to e2fsprogs (Closes: #1089085) * Decrease priority of e2fsprogs from required to important (Closes: 897277) * Fix resize2fs to update the checksums in blocks belonging to the orphan file if it needs to move them. * Fix e2fsck to clear the orphan file after processing it so that "e2fsck -E journal_only" doesn't leave the file system in a corrupted state. -- Theodore Y. Ts'o Wed, 01 Jan 2025 00:30:02 -0500 e2fsprogs (1.47.2~rc1-2) unstable; urgency=medium * Fix fuseext2 transition to account for /usr-move (Closes: #1088838) * Fix orphan_file support on big endian systems. * Mke2fs will allow "-r 1" since fsarchiver uses it rather pointlessly * Allow building e2fsprogs without libarchive-dev installed to make life easier for bootstrapping for new Debian ports (Closes: #1078693) -- Theodore Y. Ts'o Tue, 03 Dec 2024 23:40:01 -0500 e2fsprogs (1.47.2~rc1-1) unstable; urgency=medium * New upstream version * Remove the -r option from tune2fs and replace it with an extended option since most users will never need to request a file system suitable for pre-1995 1.2 version kernels and a typo will just end up confusing the user and leaving them with a file system missing most modern ext4 features, including no support for on-line resizing and no support for post-2038 timestamps. (Closes: #1086603) * Add support for gnu.translator extended attrbutes in tar files fed to mke2fs -d. * Avoid a spurious failure in badblocks when -n or -w is specified twice. (Closes: #1087341) * Fix a bug which caused e2fsck to skip checking a file system with the orphan_file feature if there are orphaned files which need to be cleaned up. * Fix a bug which caused tune2fs to corrupt a revision 0 file system when changing the inode size by updating the revision to the current standard revision supported by all Linux kernels since 1995. * Fix fuse2fs --helpfull so that it displays the full help message. * Allow resize2fs to perform an offline resize past the 256 TiB boundary * Fix unused parameter warnings for packages which including ext2fs.h. (Closes: #1082500) * Provide fuseext2 to replace the debian package src:fuse-umfuse-ext2. (Closes: #1085590) * Clean up groff warnings in man pages. (Closes: #1086892, #1082787, #1072866, #1087898) * Document the orphan_file feature in the ext4(5) and tune2fs(8) man pages. (Closes: #1073062) -- Theodore Y. Ts'o Thu, 28 Nov 2024 23:35:35 -0500 e2fsprogs (1.47.1-1) unstable; urgency=medium * New upstream version * Clarify the lsattr and mklost+found man pages that they are applicable for ext2, ext3, and ext4 file systems and not just for ext2. (Closes: #1041115) * Replace the build-depend on pkg-config with pkgconf to fix a Lintian warning. * E2fsck will now perform more consistency checks on EA (extended attribute value) inodes. * Fix a big where e2fsck could potentially leak an acl block when releasing an orphan inode. * Avoid a divide by zero crash in libext2fs if the container infrastructure, such as lxcfs, reports that the system has zero CPU's via sysconf(_SC_NPROCESSORS_CONF). -- Theodore Y. Ts'o Mon, 20 May 2024 15:28:06 -0400 e2fsprogs (1.47.1~rc2-1) unstable; urgency=medium * New upstream version * Update Chinese, Czech, French, Polish Romainian, Swedish, and Ukrainian translations * Fix libarchive support in mke2fs on mips64el (Closes: #1070042) * Fix e2scrub when the "systemctl" package is installed instead of systemd. (Closes: #1070107) * Update to standards 4.7.0 -- Theodore Y. Ts'o Mon, 20 May 2024 15:24:47 -0400 e2fsprogs (1.47.1~rc1-3) unstable; urgency=medium * Remove duplicated work in release notes * Fix resize2fs's calculation of free clusters in the last block group for file systems larger than 4TB * Fix FTBFS on Hurd caused by trying to install e2scrub's systemd unit files which aren't built since e2scrub isn't supported on Hurd * Don't build mke2fs with libarchive support on mips64el since a bug in libarchive only on that architecture causes a FTBFS due to the regression test suite failing. (See Debian Bug 1070042 for more details) -- Theodore Y. Ts'o Mon, 29 Apr 2024 21:57:42 -0400 e2fsprogs (1.47.1~rc1-1) unstable; urgency=medium * Re-enable metadata_csum_seed and orphan_file by default now that Debian Bookworm is released * New upstream version * Add support for post-2038 timestamps on platforms with 64-bit time_t. * Mke2fs -d can now support an input tar file if the libarchive library is available. * Install a udev rule to inihibit ext4 file systesm from being automounted by udisks. * Debugfs's 'hash' command has been enhanced to use the hash seed and algorithm from a superblock if a file system is opened and to display the hash seed and algorithm if the -v flag is given. * Teach mke2fs with a new extended options, root_perms, which overrides the permissions for the root directory for the new file system. * Preserve any error indicator in the superblock when replaying the journal so that a subsequent fsck can repair the file system afterwards. * Fix potential mke2fs failures when creating a file system with an orphan file when the storage device has a previous file system and does not support discard/trim commands. * E2fsck will clear the orphan_present feature silently in preen mode. * Fix potential checksum failures when performing an online resize when the mounted file system is actively modifying the superblock. * Fix a bug where a checksum failure in an htree directory can cause e2fsck's preen mode to abort unnecessarily. * Fix e2fsck's handling of an invalid symlink in an inline_data directory. * Fix e4crypt from issuing a spurious "success" error message when trying to set a policy on a non-directory. * Fix a potential infinite loop in debugfs's logdump command in some edge cases. * Fix e2fsck to correctly update quota usage after optimizing directories or deleting corrupted inodes. * Fix fuse2fs so that directories are created with the correct permissions instead of having the other and group write permissions masked off. * Fix a potential e2fsck divide by zero crash caused by a maliciously fuzzed file system. * Fix dumpe2fs to report free block ranges correctly for bigalloc file systems. * Fix resize2fs where resizing a bigalloc file system can result in the free cluster count in the last block group and the total free clusters count to be incorrect. * Avoid spurious e2scrub failures caused by trying to scrub file syustems that do not have the journal enabled, and by aborting scrub runs while upgrading the e2fsprogs package * Teach tune2fs to detect a file system which is mounted but is not mentioned in the mount namespace where tune2fs is run by treating a block device which is busy as if it is mounted. * If tune2fs can't find the mountpoint for a file system which is apparently mounted (perhaps because it's not present in the current mount namespace) when attempting to set the label or UUID in the superblock, fall back to the old method of modifying block device and silence printing any error messages. * If both the primary superblock and first block group's backup superblock are corrupted, e2fsck will now try additional backup superblocks if they are available. * Avoid mke2fs from creating an invalid file system with an insufficient number of inodes when creating a file system which is very small (100k), a block size of 1k, and an inode size of 256 bytes. * Fix a potential deadlock caused by e2fsck being run in Direct I/O mode with the threading optimization enabled. * Update and clarify various man pages. (Closes: #1038286) * Add support for SOURCE_DATE_EPOCH environment variable * Improve resize2fs's performance by eliminating extra cache flushes. * Improve mke2fs's performance when zeroing a large number of inode table blocks (when lazy inode table initialization is not enabled) by batching calls to ext2fs_zero_blocks. * Use a safe_getenv function for all calls to fetch the environment variable in libext2fs. * Upgrade fuse2fs to use fuse v3. * Build the binaries using FORTIFY_SOURCE=3 for better hardening * Add Romainian translation. * Update Malay translation. -- Theodore Y. Ts'o Fri, 26 Apr 2024 22:23:25 -0400 e2fsprogs (1.47.0-2.4) unstable; urgency=medium * Non-maintainer upload. * Upload to unstable. * Version Provides and Breaks (thanks to Matthias Klose). -- Helmut Grohne Wed, 13 Mar 2024 07:20:06 +0100 e2fsprogs (1.47.0-2.4~exp1) experimental; urgency=medium * Non-maintainer upload. * Revert time64 transitions for libss2 and libcom-err2. * Enable dh_movetousr (DEP17). (Closes: #1060000) + Mitigate file loss in libext2fs2 -> libext2fs2t64 upgrade and /usr-move. -- Helmut Grohne Sun, 10 Mar 2024 21:02:48 +0100 e2fsprogs (1.47.0-2.3) unstable; urgency=medium * Non-maintainer upload. * Fix package names in d/*.shlibs.local. (Closes: #1065087) * Update sonames in d/libext2fs2t64.lintian-overrides. * Fix packages names in code for updating symbols fies in d/rules. -- Michael Hudson-Doyle Fri, 01 Mar 2024 08:01:06 +1300 e2fsprogs (1.47.0-2.2) unstable; urgency=medium * Non-maintainer upload. [ Helmut Grohne ] * Fix FTBFS when systemd.pc changes systemdsystemunitdir. (Closes: #1053111) [ Michael Hudson-Doyle ] * Account for changes in udevudevdir as well. * Rename libraries for 64-bit time_t transition. -- Michael Hudson-Doyle Wed, 28 Feb 2024 23:40:42 +0000 e2fsprogs (1.47.0-2) unstable; urgency=medium * Don't enable metadata_csum_seed and orhpan_file by default (Closes: #1031622, #1030939) -- Theodore Y. Ts'o Sat, 04 Mar 2023 22:16:08 -0500 e2fsprogs (1.47.0-1) unstable; urgency=medium * New upstream version * Add support for the new orphan_file feature, which speeds up workloads that are deleting or truncating a large number files in parallel. * Mke2fs now enables the orphan_file and metadata_csum_seed feature. * Mke2fs now supports the extended option "assume_storage_prezeroed" which causes mke2fs to skip zeroing the journal and inode tables and to mark the inode tables as zeroed. * Tune2fs and e2label will more reliably modify the label and UUID for a mounted file system using new kernel ioctls. * Tune2fs can now disable the casefold feature after scanning all of the directories do not have the casefold flag set. * Fix a potential unbalanced mutex unlock when there is a short read while using the bounce buffer when using direct I/O. * Update to standards 4.6.2 -- Theodore Y. Ts'o Mon, 06 Feb 2023 22:07:49 -0500 e2fsprogs (1.46.6-1) unstable; urgency=medium * New upstream version * NMU acknowledge (Closes: #1022096) * In line with v6.2 and later Linux kernel, the extended xattribute hash may be calculated using either the signed or unsigned char variant, but new xattr entries will be set using the unsigned variant. Since this difference is only seen for extended attribute names that contain non-ASCII characters, the fact that we had a signed vs unsigned char dependency was not noticed for over two decades. * E2fsck will now check to make sure the journal inode does not have the encrypt flag set. * Fuse2fs now supports an offset= option which allows operating on a file system image which is located starting at the specified offset from the beginning of the image. * Fix a deadlock bug in e2fsck's error handler when there are errors trying to write to the file system. * Fix a bug in tune2fs which could cause it to crash if device goes off-line just as it being opened. * Improve error messages issued by badblocks and tune2fs. * Fix a crash in badblocks when the user specifies an overly large number of blocks tested at a time in read/write or nondestructive mode. * Speed up e2fsck's clonning of multiply-claimed blocks so it is substantially faster on very large file systems. * Don't fail when the source directory for mke2fs -d doesn't support extended attributes. * Update Chinese, Czech, Dutch, French, German, Malay, Polish, Serbian, Spanish, Swedish, and Ukrainian translations. * Update the Debian policy compliance to 4.6.1. -- Theodore Y. Ts'o Thu, 02 Feb 2023 00:38:18 -0500 e2fsprogs (1.46.6~rc1-1.1) unstable; urgency=medium * Non-maintainer upload * Convert copyright files to machine-readable format, adding the missing licenses and copyright information (Closes: #1022096) -- Bastian Germann Tue, 03 Jan 2023 14:31:18 +0100 e2fsprogs (1.46.6~rc1-1) unstable; urgency=medium * Trial upstream release for 1.46.6 * Debugfs's ncheck command now allows the inode number to be surrounded by angle brackets * Debugfs -c no longer prints a scary message on startup * Resize2fs will round down the requested new file system size to the nearest cluster boundary when resizing bigalloc file systems * Avoid triggering udev in dumpe2fs and "resize2fs -P" for file systems with MMP enabled * Fix tune2fs so it will detect another device stealing the MMP sessions while rewriting metadata checksums. * Fix a bug where e2fsck could fail when specifying an undo file and an explicit superblock number * Fix e2image so it won't potentially loop forever for certain invalid file systems * Resize2fs now honors the E2FSPROGS_FAKE_TIME environment variable * Fix tune2fs, fuse2fs, and debugsfs to update j_tail_sequence when replaying the journal * Add additional bullet-proofing for very badly corrupted file systems (Addresses CVE-2022-1304) (Closes: #1010263) * Check for and handle malloc() failures when computing the log filename in e2fsck and in the libss library * Tune2fs and e2fsck to accept pathames which include '=' characters * Update and clarify's chattr's man page and usage message * Fix tune2fs to avoid a crash if the journal replay fails and to make sure its exit status is non-zero if there is some failure. -- Theodore Y. Ts'o Mon, 12 Sep 2022 08:27:55 -0400 e2fsprogs (1.46.5-2) unstable; urgency=medium * Fix build on GNU/kFreeBSD (caused by the fact that the Debian port has an ancient version of coreutils, so the timeout program doesn't support the -v option. -- Theodore Y. Ts'o Mon, 03 Jan 2022 23:48:13 -0500 e2fsprogs (1.46.5-1) unstable; urgency=medium * New upstream release * Resize2fs will automatically drop one block group (128M) if that will allow a resize operation to succeed when it would have failed due to running afoul of the 2**32 inode count limit. * Fix resize2fs -P so it won't potentially loop forever when the file system is corrupted * E2fsck will now automatically update the block group checksum when fixing a problem in a block group descriptor * Fix error handling in the unix_io module which could cause e2fsck to deadlock in the face of I/O errors. * Fix a bug in e2fsck fast commit handling which could result it in crashing in some rare cases. * Fix e2fsck and tune2fs's handling of quota limits, which previously could get lost. * Correct the report header printed by debugfs's get_quota and list_quota commands. * Speed up off-line resizing of very large file system. * Fixed spelling mistakes in the mke2fs.conf man page. * Update Chinese, Malay, Serbian, Spanish, Swedish, and Ukrainian translations. * Update the Debian policy compliance to 4.6.0. -- Theodore Y. Ts'o Thu, 30 Dec 2021 00:35:14 -0500 e2fsprogs (1.46.4-1) unstable; urgency=medium * New upstream release * Mke2fs now creates 256 byte inodes by default for all non-GNU Hurd file systems. (Previously small file systems would be created using 128 byte inodes.) * The bigalloc feature is now considered supported when the cluster size is no more than 16 times the block size. * E2fsck now checks to make sure directory entries do not reference internal quota inodes. * E2image now includes the quota inodes when creating file system image, since they are part of the file system metadata. * E2fsck now properly accounts the quota usage of the project quota file. * Fix a regression so mke2fs can create a file system into non-existent file (Closes: #992094) * Fix mke2fs to correctly create Posix ACL's on big-endian systems when copying files from a directory hierarchy. * Fix FTBFS caused by test failures on big-endian systems. (Closes: #991922) * Fix FTBFS on GNU Hurd * Use WantedBy=multi-user.target in e2scrub_reap.service. (Closes: #991349) * Updated and clarified the resize2fs man page. (Closes: #979411) * Update Czech, Dutch, French, Polish, Portuguese, and Swedish translations. -- Theodore Y. Ts'o Wed, 18 Aug 2021 22:47:40 -0400 e2fsprogs (1.46.3-1) experimental; urgency=medium * New upstream release * Fix resize2fs bug when performing an off-line file system expansion with MMP and there isn't sufficient reserved block group descriptor blocks could lead to file system corruption. (Closes: #984472) * Teach the filefrag program the -V option, which will print the version of the tool, or if -V option is specified twice, will print the list of supported FIEMAP flags. * Fix fast_commit portability problems on sparc64 and arm64 architectures (the latter when running e2fsprogs compiled for arm32). (Closes: #987641) * Fix missing mutex unlock in an error path in the Unix I/O manager. * Fix Direct I/O support in the Unix I/O manager (this was a regression introduced in v1.46.2). * Fix mke2fs to avoid discarding blocks beyond the end of the file system to be created when creating a file system which is smaller than 16MB and the file system size was explicitly specified and smaller than the size of the block device. (Closes: #989630) * Teach mke2fs to avoid giving a spurious warning about a pre-existing partition table and it is creating a file system at a non-zero offset (so the partition table wouldn't be overwritten in any case). (Closes: #989612) * Fix e2image -Q to prevent a multiplication overflow could corrupt the generated QCOW2 output file for very large file systems. * When e2fsck repairs '.' and '..' entries in corrupted directories, set the file type in the directory entry to be EXT2_FT_DIR and do not leave the file type as EXT2_FT_UNKNOWN. * Fix e2fsck so that the if the s_interval is zero, and the last mount or write time is in the future, it will fix invalid last mount/write timestamps in the superblock. (This was a regression introduced in v1.45.5.) * Fix lsattr and chattr to avoid opening or calling EXT2_IOC_[GS]ETFLAGS on devices, since this can cause some devices to react badly as a result. (This fixes a regression introduced in v1.46.2.) (Closes: #986332) * Fix potential memory leaks and seg faults when memory allocations fail. * Fix various compiler and valgrind warnings * Updated and clarified the e2image and filefrag man pages. * Update Dutch, Malay, and Serbian translations. -- Theodore Y. Ts'o Tue, 27 Jul 2021 11:04:05 -0400 e2fsprogs (1.46.2-2) unstable; urgency=medium * Fix FTBFS on arm32 when building on a system with an arm64 kernel. This also fixes a portability problem when replaying a fast-commit journal on an arm64 kernel when using an arm32 userspace. (Closes: #987641) * Fix additional fast-commit portability problems on non-x86 systems which don't allow non-aligned pointer dereferences (for example, on a sparc64 system). * Fix a missing mutex unlock on an error path which can cause e2fsck to hang on I/O errors. * Clean up and improve the man page for e2image -- Theodore Y. Ts'o Mon, 07 Jun 2021 07:27:15 -0400 e2fsprogs (1.46.2-1) unstable; urgency=medium * New upstream release * Add support for the FS_NOCOMP_FL flag to chattr and lsattr. * Fix Direct I/O support on block devices where the logical block size is greater 1k. * Fix debugfs's logdump so it works on file systems whose block size is greater than 8k. * Fix the debugfs rdump and ls commands so they will work correctly for uid's and gid's => 65536. * Teach the tune2fs program to support "random" as an argument to the -c option, which sets the maximum mount count. (Closes: #926293) * Fix a where e2fsck could a crash when there is error while e2fsck is trying to open the file system, and e2fsck calls ext2fs_mmp_stop() before MMP has been initialized. (Closes: #696609) * Fix the debugfs write and symlink commands so they support targets which contain a pathname (instead of only working when writing a file or creating a symlink in the current directory). * When resizing a small file systems to a super-large file system size, avoid issuing some scary bitmap operation warnings. * Improved error checking in the fast commit replay code in e2fsck. * Updated and clarified the chattr man page. * Update the Spanish translation from the translation project. -- Theodore Y. Ts'o Sun, 28 Feb 2021 21:24:34 -0500 e2fsprogs (1.46.1-1) unstable; urgency=medium * Drop transitional packages libcomerr2, e2fslibs, and e2fslibs-dev * Fix a bug in libext2fs and debugfs when trying to set an extended attribute will result in a seg fault. * Fix e2fsck so it properly accepts large_dir directories which are greater than 4GB in size. * Fix mke2fs -d so it correctly handles important a directory or small file which is stored using inline_data and contains an ACL or extended attribute. (Closes: #971014) * Add build profiles noudeb and pkg.e2fsprogs.no-static (Closes: #966686) * Update the Czech, French, Malay, Polish, Portuguese, Swedish, and Ukrainian translations from the translation project. -- Theodore Y. Ts'o Tue, 09 Feb 2021 17:36:02 -0500 e2fsprogs (1.46.0-1) experimental; urgency=medium * New upstream release * Add support for the new fast_commit feature. (Requires Linux version 5.10 or higher) * Add support for the new stable_inodes feature which is needed to support some the fscrypt siphash algorithm. * Add support for file systems that have both case folding and encryption enabled. (Not yet upstream, but used in some Android handsets.) * The fuse2fs program now supports the "norecovery" which omits replying the journal and mounts the file system read-only. (Closes: #878927) * Bitmap loading is now done using multiple threads which can speed up debugfs, dumpe2fs, and e2fsck on very large file systems. * E2fsck now will check file names on file systems with case folding enabled to make sure the characters are valid UTF-8 characters. This is done for file systems which enforce strict encodings, and optionally if the extended "check_encoding" option is requested. * E2fsck will properly handle checking for duplicated file names when case folding is enabled. * E2fsck will now find and fix file system corruptions when the encrypted files have a different policy from their containing directory. * The "htree" command in debugfs now displays the metadata checksums for hash tree index blocks. * Fix various bugs where a maliciously corrupted file systems could case e2fsck and other e2fsprogs programs to crash. * Dumpe2fs will print the error code that Linux kernels newer than v5.6 will save to indicate the class of error which triggered the ext4_error event. * E2fsprogs programs (in particular, fuse2fs) can now update htree directories without clearing the htree index. * Tune2fs will properly recalculate directory block checksums when clearing the dir_index feature. * Fix a bug in e2fsck directory rehashing which could fail with ENOSPC because it doesn't take into account the space needed for the metadata checksum, and doesn't create a sufficiently deep index tree. * Clarify the e2fsck messages when it resets the directory link count when it is set to the overflow value but it is no longer needed. * Mke2fs now sets the s_overhead_cluster field, so that the kernel doesn't need to calculate it at mount time. This speeds up mounting very large file systems. * Speed up mke2fs when creating large bigalloc file systems by optimizing ext2fs_convert_subcluster_bitmap(). * The filefrag program can now request the kernel to display the extent status cache by using "filefrag -E". (This requires Linux version 5.4 or newer.) -- Theodore Y. Ts'o Fri, 29 Jan 2021 16:24:41 -0500 e2fsprogs (1.45.7-1) unstable; urgency=medium * New upstream release * Mke2fs will now warn when creating a file system on a DAX-capable device and the block size is incompatible with DAX. * The chattr and lsattr programs now support using the 'x' attribute to set/get dax support on a particular file. * E2fsprogs now supports the gnu.* extended attribute namespace, which allows mke2fs -d to import the gnu.translator extended attributes. * Add support for the simultaneous enablement of the casefold and encryption features, which ext4 supports starting with the v5.5 Linux kernel. * Debugfs will now retry opening the superblock if it finds that the superblock has an invalid checksum, since this could happen when opening a mounted file system. * Fix an off-by-one error when validating the depth of an htree which caused e2fsck to potentially fail to notice an invalid htree. * Fix potential buffer overrun in e2fsck when scanning directory blocks in pass 2. (Addresses Google Bug: #158564737) * Fix tune2fs so that it unlocks the MMP block if it can't perform the requested operation. * Fix mke2fs so it can import the contents of a directory using the -d option when it has inode numbers that are greater than 2**32. Also fix an omission where the extended attributes on the top-level directory was not getting copied to the root directory. * Fix e4crypt so that the add_key operation uses the explicitly provided salt if it is provided. * Fix resize2fs to prevent it from overflowing the block group descriptors from overflowing the first block group. (This can only happen when the block size is 1k and the file system is very large.) * Fix debugfs's set_super_value command so it can set 64-bit integer fields, such as s_kbytes_written. * Fix filefrag so that it won't crash if the kernel returns zero for statfs(2)'s device id or if it returns a blocksize of zero the device's blocksize. * Fix a few bad error code returns in the unix and sparse I/O managers. * E2fsck will no longer try to fix duplicate file names in an encrypted directory by mutating the encrypted file name. * Updated and clarified various man pages. * Update the Dutch, Malay, and Serbian translations from the translation project. * Update the Debian policy compliance to 4.5.1 -- Theodore Y. Ts'o Fri, 29 Jan 2021 00:19:52 -0500 e2fsprogs (1.45.6-1) unstable; urgency=medium * New upstream release * Fixed a number of potential out of bounds memory accesses caused by fuzzed / malicious file systems. * Fix a spurious complaint from e2fsck when a directory which previously had more than 32000 subdirectories has the number of subdirectories drops below 32000. * Improve e2fsck's ability to deal with file systems with a *very* large number of directories. * Debugfs will ignore lines in its command files which start with a comment character ("#"). * Fix debugfs so it correctly prints inode numbers > 2**31. * Filefrag now supports very large files (with > 4 billion blocks), as well as block sizes up to 1 GiB. * Mke2fs -d now correctly sets permission with files where the owner permissions are not rwx. * Updated and clarified various man pages (Closes: #953493, #953494, #951808) * Drop as unneeded libattr1-dev as a build dependency (Closes: #953926) * Update the Malay translation from the translation project. -- Theodore Y. Ts'o Fri, 20 Mar 2020 23:49:33 -0400 e2fsprogs (1.45.5-2) unstable; urgency=medium * Fix com_err support on Hurd, which has POSIX E* error code starting at 0x40000000. Otherwise the regression tests will fail since the expected output for various error cases will not have the correct error text. -- Theodore Y. Ts'o Wed, 08 Jan 2020 15:58:44 -0500 e2fsprogs (1.45.5-1) unstable; urgency=medium * New upstream release * E2fsck will no longer force a full file system check if time-based forced checks are disabled and the last mount time or last write time in the superblock are in the future. * Fix spurious weekly e-mails when e2scrub_all is run via a cron job on non-systemd systems. (Closes: #944033) * Remove an unnecessary sleep in e2scrub which could add up to an additional two second delay during the boot up. Also, avoid trying to reap aborted snapshots if it has been disabled via e2scrub.conf. (Closes: #948193) * Resize2fs -M's estimates are now more accurate on mounted file systems. * Tune2fs prohibits enabling or disabling the uninit_bg feature on mounted file systems, since this is unsafe. * Fix support of 32-bit uid's and gid's in fuse2fs and in mke2fs -d. * Fix mke2fs's setting bad blocks to bigalloc file systems. * Fix a bug where fuse2fs would incorrectly report the i_blocks fields for bigalloc file systems. * Fix potential crash in e2fsck when rebuilding very large directories on file systems which have the new large_dir feature enable. * Fix FTBFS problem hurd/i386. (Closes: #944649) * Fix CVE-2019-5188: potential a out of bounds write in mutate_name() when checking a maliciously corrupted file systems * Add autopkgtest tests smoke and fuse2fs * Updated and clarified various man pages * Update the debhelper compatibility level to 12 * Update the Chinese and Malay translations * Update the Debian policy compliance to 4.4.1 -- Theodore Y. Ts'o Tue, 07 Jan 2020 09:18:39 -0500 e2fsprogs (1.46~WIP.2019.10.09-1) experimental; urgency=medium * Add (minimal) support to enable the fast commit feature. This is just enough to enable kernel development work; e2fsck replay of journals with the fast commit feature is *not* available. * E2fsck will now check encryption policies for consistency -- Theodore Y. Ts'o Wed, 09 Oct 2019 20:22:50 -0400 e2fsprogs (1.45.4-1) unstable; urgency=medium * New upstream feature * Fix CVE-2019-5094: A maliciously corrupted file systems can trigger buffer overruns in the quota code used by e2fsck. * E2fsck will now check to make sure the casefold flag is only set on directories, and only when the casefold feature is enabled. * E2fsck will not disable the low dtime checks when using a backup superblock where the last mount time is zero to fix a failure in xfstests ext4/007 * Fix e2fsck so that when it needs to recreate the root directory, the quota counts are correctly updated * Update the man pages to document the new fsverity feature, and improve the documentation for the casefold and encrypt features * Allow e2scrub_all to work when the VG free space is exactly the snapshot size (Closes: #935009) * Avoid spurious lvm warnings when e2scrub_all is run out of cron on non-systemd systems (Closes: #940240) * Update the Dutch, German, Malay, Spanish, and Vietnamese translations -- Theodore Y. Ts'o Mon, 23 Sep 2019 15:31:27 -0400 e2fsprogs (1.45.3-4) unstable; urgency=medium * stop using Link Time Optimization; it breaks reproducible builds * skip "make check" if DEB_BUILD_OPTIONS contains nocheck; this is needed for some ports builds to complete successfully (Closes: #933247) * fix e2fsprogs build problems on non-Linux ports -- Theodore Y. Ts'o Tue, 06 Aug 2019 15:22:30 -0400 e2fsprogs (1.45.3-3) unstable; urgency=medium * Fix Breaks/Replace dependency for logsave (Closes: #932874) * Mark logsave as Multi-Arch: foreign (Closes: #932876) * Fix test bug on the x32 architecture (Closes: #932906) * Fix FTBFS problem on FreeBSD and Hurd since they don't have systemd * Fix blhc problem when running "make check" -- Theodore Y. Ts'o Thu, 25 Jul 2019 15:35:01 -0400 e2fsprogs (1.45.3-2) unstable; urgency=medium * Add a hard dependency on logsave to e2fsprogs to fix initramfs issues (Closes: #932855, #932859, #932861, #932881, #932888) * Add check in e2scrub_all.cron so that it doesn't fail if the package is removed, since e2scrub_all.cron is marked as a config file. (Closes: #932622) * Update the Debian policy compliance to 4.4.0 * Update Czech, French, German, Polish, Portuguese, Swedish, and Ukrainian translations -- Theodore Y. Ts'o Wed, 24 Jul 2019 12:56:52 -0400 e2fsprogs (1.45.3-1) unstable; urgency=medium * New upstream version * Automatic online file system scrubs is now disabled by default. They can be enabled by editing /etc/e2scrub.conf. * fuse2fs is now installed in /usr/bin instead of /usr/sbin * Fix fuse2fs compatibility with fuse3; but specifying the nonempty option may be necessary if fusermount with fuse v2 is in use. See NEWS.gz for more details. * Fixed e2fsck support of file systems using large_dir and inline directories at the same time. * Fixed a bug in e2scrub_all so it correctly handles an LUKS volume stacked on top of an LV. (Closes: #931387) * Fixed a bug in e2scrub_all so it correctly specifies the volumes to clean up when using "e2scrub_all -r". (Closes: #931679) * Fixed improper use of positional markers in the Czech, Dutch, German, and Vietnamese translations. (Closes: #892173) * Remove ancient special-case CFLAGS for Alpha and Powermac platforms * Drop packaging support for Debian Jessie * Use the same build tree for the e2fsprogs udeb package * Restructure rules file to use dh * Only require the udev, systemd, and cron build dependencies when building on Linux. (Closes: #931266) * Move logsave to its own package. (Closes: #923372) * Update the Czech and Dutch translations -- Theodore Y. Ts'o Sun, 14 Jul 2019 21:01:11 -0400 e2fsprogs (1.45.2-1) unstable; urgency=medium * New upstream version * When mke2fs asks the user if she should proceed, fall back to the English 'y' or 'Y' characters since there could be a missing translation prompting the use of the English 'y' character. (Closes: #907034) * Fix spurious complaint of blocks beyond i_size for verity files. * Update the Czech, Malay, Polish, Spanish, Swedish, and Ukrainian translations. Add the new Portuguese translation. (Closes: #912185) -- Theodore Y. Ts'o Mon, 27 May 2019 21:46:31 -0400 e2fsprogs (1.45.1-3) unstable; urgency=medium * Fix e2scrub_all cron failures (Closes: #929287) -- Theodore Y. Ts'o Mon, 20 May 2019 21:48:40 -0400 e2fsprogs (1.45.1-2) unstable; urgency=medium * Avoid spurious e2scrub_all error messages spamming administrators from cron/systemd timer units when lvm2 is not installed and/or there are no lvm devices present in the system (Closes: #928977, #929186, #929254) -- Theodore Y. Ts'o Mon, 20 May 2019 11:02:09 -0400 e2fsprogs (1.45.1-1) unstable; urgency=medium * New upstream feature * Drop lvm2 from the recommends line (Closes: #924275) * Add the -n flag to the e2scrub and e2scrub_all commands * Teach e2scrub to issue more useful error messages * Update support for the case-folding file system feature to match what finally will be landing in the kernel. * Teach e2scrub_all to skip scrubbing a file system if there is not enough free space to create a snapshot. (Closes: #924301) * Fixed debugfs so it correctly prints ea_in_inode xattr values. * Debugfs now prints non-printing characters using C-style hex escape sequences. * E2fsck now checks the unused portions of the bitmap blocks when the number of blocks/inodes is less than the full blocksize to make sure they are properly set. * Fixed mke2fs's insanely large file system check, so that creating a 900TB file system will succeed. * E2scrub now tags its temp snapshot volumes with UDISK_IGNORE to avoid them showing up in GUI's. (Closes: #926112) * Mark the e2scrub systemd service files to indicate that it requires CAP_SYS_ADMIN and CAP_SYS_RAWIO so e2scrub will get skipped when run in containers that don't give root these capabilities. (Closes: #926138) * E2fsck can now save a problem code log for debugging or monitoring purposes. -- Theodore Y. Ts'o Sun, 12 May 2019 21:23:25 -0400 e2fsprogs (1.45.0-1) unstable; urgency=medium * New upstream feature * tune2fs can now set the file system error bit to force a check at the next fsck by using the extended option "force_fsck". * There is now an e2scrub script which will allow e2fsck to be run on mounted file systems using an LVM device. There will be a systemd script to automatically run e2scrub on all ext4* file systems where it can be supported. * mke2fs will attempt avoid discarding pre-allocated blocks when initializing a file system on a file. * The fuse2fs command now supports a "fakeroot" option to allow an unprivileged user to fuse2fs to modify rootfs images. * Add initial support for the character set and case-folding file system feature. * Debugfs can now set the inode's checksum field * E2image now accepts the -b and -B options to allow the user to specify the superblock location when creating a raw or qcow2 image. * Update the debhelper compatibility level to 11 * Update the Debian policy compliance to 4.3.0 -- Theodore Y. Ts'o Wed, 06 Mar 2019 12:55:18 -0500 e2fsprogs (1.44.6-1) unstable; urgency=medium * New upstream version * Fix e4defrag overflow problem when files are being created while it is running (Closes: #888899) * Fix e2fsck so it can correctly handle directories > 2 GiB when the largedir feature is enabled. * Fix mke2fs's hugefile creation so it works correctly for certain unfortunately sized disks/partitions. * Fix the libext2fs library to be more robust against invalid/maliciously corrupted block group descriptors. * Fix mke2fs and debugfs so they can correctly copy in files > 2 GiB. * Fix debugfs so its stat command can correctly display directory sizes > 2 GiB. * Fix memory leaks in debugfs, mke2fs, and e2freefrag. * Avoid unnecessarily linking badblocks with the libblkid shared library. (Closes: #919958) -- Theodore Y. Ts'o Tue, 05 Mar 2019 15:10:40 -0500 e2fsprogs (1.44.5-1) unstable; urgency=medium * New upstream version * Avoid overflows when tracking the number of files defragged by e4defrag (Closes: #888899) * Fix groff formatting nits in various man pages (Closes: #916188) * Fix location of libext2fs documentation (Closes: #915942) * Fix regression so we are correctly translating Posix ACL's in libext2fs * Use the online free block counts so e2freefrag's percentages are correct * Fix a false warning that tune2fs will take long time to change a UUID if the metadata_csum feature is not enabled * Fix mk_cmds so it works on a non-usrmerge system when e2fsprogs is built on a usrmerge system (Closes: #914087) * E2fsck will avoid offering to set the inline_data feature flag unnecessarily * E4defrag will handle the case where it is running as root and it can't find the file system to open more gracefully (Closes: #907634) * Fix a bug where resize2fs was failing to update the extent tree checksums in an corner case * Fix fuse2fs's command line parsing when options are specified after the target device/image * Fix a bug which could cause e2fsprogs tools to segfault on a corrupted file system where the journal's s_nr_users is impossibly large. * E2image now includes the mmp block (if needed) when creating a metadata-only image. * When e2fsck notices it could optimize an extent tree, it will now ask "Optimize?" instead of "Fix?", which was confusing some users since it implied that something was broken. -- Theodore Y. Ts'o Sat, 15 Dec 2018 22:46:49 -0500 e2fsprogs (1.44.4-2) unstable; urgency=medium * tune2fs fix dereference of freed memory after journal * fix verity support * Generate NEWS.gz for e2fsprogs's package documentation directory * Update Debian policy compliance to 4.2.0 * Improve version dependency for libcom-err and ss2 for e2fsprogs -- Theodore Y. Ts'o Wed, 22 Aug 2018 19:30:17 -0400 e2fsprogs (1.44.4-1) unstable; urgency=medium * New upstream release * Add basic support for the ext4 verity (fsverity) feature * E2fsck will fix file systems that have both the resize_inode and meta_bg feature enabled * Debugfs's ncheck command will now correctly inodes that have multiple hard links * Remove kilo/kibi rant (Closes: #757831) * Update Danish, Spanish, and Swedish translations * Fix symlink to directory conversions (Closes: #905195) -- Theodore Y. Ts'o Sat, 18 Aug 2018 20:46:29 -0400 e2fsprogs (1.44.3-1) unstable; urgency=medium * New upstream release * Include hashmap.h in the libext2fs2 package * Update debian policy compliance to 4.1.5 -- Theodore Y. Ts'o Tue, 10 Jul 2018 01:23:17 -0400 e2fsprogs (1.44.3~rc2-1) unstable; urgency=low * New upstream release * Debugfs's inode_dump and xattr_dump commands have new options to display the low-level contents of an inode's i_blocks and extra space, and to better be able to debug corrupted extended attributes. * The dumpe2fs command now will show information about the Multi-Mount Protection (MMP) block, if present * E2fsck, dumpe2fs, and debugfs is now much more robust at handling badly (or maliciously) corrupted file systems. * E2fsck will now offer to enable the dir_nlink feature if it is required by the file system * The project id field in the inode is now properly byte-swapped on big-endian systems * E2fsprogs better handles recent kernels which reports old error conditions via the first fsync() after the file is opened * Updated/fixed various man pages * Update Czech, Dutch, Spanish, French, Polish, Swedish, Ukrainian, and Vietnamese translations * Update debian policy compliance to 4.1.4 -- Theodore Y. Ts'o Tue, 3 Jul 2018 23:31:40 -0400 e2fsprogs (1.44.2-1) unstable; urgency=medium * New upstream release * Demote e2fsprogs from Essential: yes to XB-Important: yes (Closes: #474540) * Fix mke2fs to print a more useful/correct error message if ext2fs_close_free() fails at the end of the file system creation process * Improve chattr's man page * Update Polish translation -- Theodore Y. Ts'o Mon, 14 May 2018 19:59:27 -0400 e2fsprogs (1.44.1-2) unstable; urgency=medium * Fix e2image handling of e2i files on big endian systems * Add sanity checks for inodes containing xattr values to prevent maliciously crafted file systems from causing crashes caused by infinite recursion * Fix e2fsck so that quota usage is adjusted when clearing orphaned inodes * Fix filefrag so that unknown flags returned by FIEMAP won't cause a buffer overrun -- Theodore Y. Ts'o Tue, 10 Apr 2018 11:04:36 -0400 e2fsprogs (1.44.1-1) unstable; urgency=medium * New upstream release * Fix FTBFS problem on Hurd (Closes: #893590) * Fix e2fsck support of HTree directories on big-endian systems * Fix miscellaneous e2image image handling for file systems with bigalloc and meta_bg features enabled. * Fix orphan list handling of inodes on bigalloc file systems (and other situations where inodes need to be deleted or truncated) in e2fsck. * Update Swedish translation. * Add Vcs-* headers in Debian packaging (Closes: #887512) * Speed up reading bitmap blocks in debugfs when opening large file systems. * Add clarifications to chattr's man page. (Closes: #890390) -- Theodore Y. Ts'o Sat, 24 Mar 2018 15:13:28 -0400 e2fsprogs (1.44.0-1) unstable; urgency=medium * New upstream release * Update Czech, Spanish, French, Malay, and Ukrainian translations. -- Theodore Y. Ts'o Wed, 07 Mar 2018 14:39:52 -0500 e2fsprogs (1.44.0~rc2-1) experimental; urgency=medium * New upstream release * Fix FTBFS problem on Hurd * Improved e2fsck's consistency checking for symlink. -- Theodore Y. Ts'o Sun, 04 Mar 2018 15:57:21 -0500 e2fsprogs (1.44.0~rc1-1) experimental; urgency=low * New upstream release * Add support for the large_dir feature * Add support for the ea_data feature * Resize2fs will not complain about online resizes of bigalloc file systems * Debugfs's ls command will now print the high bits of the mode bits * Fix some corner cases with tune2fs and journal replay * Add support for libreadline.so.7 * E2freefrag will now use the GETFSMAP ioctl for mounted file systems * E2fsck is now much faster when scanning extents on bigalloc file systems * Fix various compiler and UBSAN warnings -- Theodore Y. Ts'o Tue, 27 Feb 2018 16:56:32 -0500 e2fsprogs (1.43.9-2) unstable; urgency=medium * Fix upgrade when there are two installations of a library (for different architectures) that we are transitioning to the new package name. (Closes: #890590) * Add support for libreadline.so.7 to libss * Fix tune2fs's journal recovery support * Fix tune2fs to require a freshly checked file system if turning off the metadata_csum feature and UUID has been changed. -- Theodore Y. Ts'o Sat, 24 Feb 2018 20:48:29 -0500 e2fsprogs (1.43.9-1) unstable; urgency=medium * Remove some obsolete flags and add document new flags in the chattr man page * Remove misplaced "MNP is unsupported" message from debugfs * Suppress false positive lintian warning about "new essential package" (caused by preparatory work to make the e2fsprogs package no longer essential) * Fixing missing "General" in "GNU General Public License" in copyright files. * Fix whitespace issue in the debian control file * Update the Hungarian translation. * Rename the packages e2fslibs* to libext2fs* and libcomerr2* to libcom-err2* to conform with the standard Debian library package naming conventions. (Closes: #269569) -- Theodore Y. Ts'o Thu, 08 Feb 2018 13:09:49 -0500 e2fsprogs (1.43.8-2) unstable; urgency=medium * Update debian policy version to 4.1.3 * Mark library packages as priority: optional * Simplify the debian/rules file and don't build e2fsprogs-l10n unnecessarily * Fix FTBFS on big-endian systems (Closes: #886119) * Add support for the build profile: noudeb * Add support for the build profile: pkg.e2fsprogs.no-fuse2fs * Add support for the build profile: pkg.e2fsprogs.no-static-e2fsck -- Theodore Y. Ts'o Wed, 03 Jan 2018 16:18:40 -0500 e2fsprogs (1.43.8-1) unstable; urgency=medium * New upstream version * Fix a bug where updated bitmap checks might not be written to disk. (Closes: #883869) * Add missing byte swaps for newly added fields in the superblock * Fix a potential use after free bug in e2fsck when fixing a corrupted root node in directory hash tree. * Fix a bug in e2fsck where a badly/maliciously corrupted superblock (which is not fixed due to the -n option, for example) can cause a floating point exception when printing the summary statistics. (Closes: #879220) * Fix debugfs's ncheck command so that it correctly prints the inode number when printing an error message. * Fix a bug in e2freefrag where it could print an incorrect free blocks count on a file system with the 64-bit block number feature. * Update the German, Serbian, Spanish, and Ukrainian translations. * Fix a bug where resize2fs's free blocks sanity check could fail with a false positive and refuse to check a file system with the 64-bit block number feature. * Fix and clarify various man pages and documentations. Also fixed up some random usage texts that were incorrect. (Closes: #880483) * Add missing copyright file for the e2fsprogs-l10 package. (Closes: #880207) * Add missing Multi-arch hints (Closes: #881408, #881590, #881591) -- Theodore Y. Ts'o Mon, 01 Jan 2018 19:44:41 -0500 e2fsprogs (1.43.7-1) unstable; urgency=medium * New upstream version * Fix error handling in debugfs, fuse2fs, and tune2fs so errors while replaying the journal will not cause a segfault in some corner cases * Fix resize2fs to avoid it from either failing or corrupting the file system image in certain corner cases when doing an off-line resize * Fix many spelling mistakes in various man pages, code comments, and program messages. * Fix e2fsck and debugfs so that maliciously corrupted file systems will not cause buffer overflows (Closes: #873757, #878104) * Update German translation (Closes: #833514) * Update debian policy version to 4.1.1 * Fix FTBFS caused by debhelper/10.9 and references to obsolete packages in the rules file (Closes: #876551) * Promote e2fsprogs-l10n from suggests to recommends (Closes: #873812) * Make e2fsprogs-l10n be arch:all (Closes: #873813) -- Theodore Y. Ts'o Mon, 16 Oct 2017 01:20:54 -0400 e2fsprogs (1.43.6-1) unstable; urgency=medium * New upstream version * Break out the locale files to a separate package (e2fsprogs-l10n) to reduce the size of the e2fsprogs package, since it is an essential/required package. * Remove support for building uuid/blkid packages on pre-Wheezy distributions (which are no longer supported). * Remove support for pre-Multiarch versions of Debian (which are no longer supported). * Fixed the printing of quota inconsistency messages in e2fsck on 32-bit platforms. Also fixed a bug which caused project quota problems to be labelled as group quota problems. * Fixed a UI problem with yes/no questions when there are fuzzy translation entries which caused some messages to be printed in English and some in the language specified by the locale. (Closes: #856586) * Fix some out-of-bounds memory accesses in e2fsck caused by (usually maliciously) corrupted file systems. (Closes: #871539, 871540) * Optimize CPU usage in e2fsck for very large, very fragmented sparse files. * Avoid creating file systems that use project quotas and 128 byte inodes. * Improve tune2fs's message when a file system needs to be checked using e2fsck -f before running certain complex tune2fs operations. (Closes: #857336) * Improve e2fsck's message when the proceed_delay option in /etc/e2fsck.conf is enabled. (Closes: #857336) * Fix an LFS bug in e2image. (Closes: #855246) * Fix portability problem caused by the fact that disks are character mode devices systems with FreeBSD kernels. * Update the Czech, French, Polish, Swedish, and Vietnamese translations. -- Theodore Y. Ts'o Tue, 29 Aug 2017 00:58:29 -0400 e2fsprogs (1.43.5-1) unstable; urgency=medium * New upstream version * Fix ext2fs_sync_device() so it returns the proper error code if the BLKFLSBUF ioctl fails for some reason. * Fix a potential crash in tune2fs when enabling project quota when the file system has no inodes by fixing error handling in the quota_write_inode() in libsupport. * Fix a bug in debugfs's "ls -p" handling which could cause it to print garbage after a file name in a directory entry. * Fix a number of bugs in debugfs, dumpe2fs, e2fsck, tune2fs, and resize2fs where a carefully/maliciously corrupted file systems (found by American Fuzzy Lop) could these programs to crash or hang. (Closes: #868489) * E2fsck no longer issues some harmless bitmap warnings caused by a corrupted file system; since those corruptions will be fixed up by e2fsck later, there's no point issuing these internal warnings. * E2fsck will now notice invalid quota inode numbers, and offer to fix them. * Fix a regression introduced in e2fsprogs 1.43 which broke mke2fs's hugefile creation so that they aren't contiguous. * Fix how backup superblocks are written in big endian systems so they are all correctly byte swapped. * Fixed tune2fs's support for enabling and disabling project quota. * The badblocks program now properly handles languages which have multi-column wide character such as Chinese. (Closes: #860926) * The mke2fs -U option now accepts "null", "clear", "random", or "time" just as tune2fs's -U option. * Fix e2fsck's -E bmap2extent feature (which converts a file to use extents from indirect block maps) so that it handles sparse files correctly. * Fix libext2fs to correctly handle accounting for an external xattr block on bigalloc file systems. * Fix e2fsck to correctly handle quota accounting when deleting files that have multiply-claimed blocks pass 1b. * Fix potential buffer overrun bug in e2fsck when using 128 byte inodes. * E2fsck's extent tree optimization can now be disabled via an command-line extended option or via an e2fsck.conf configuration parameter. * The e2fsck program now properly updates the quota accounting when optimizing the extent tree. * Fix some error handling in e4crypt when operating on keyring ID's. * Fix e2fsck's quota handling when the bigalloc feature is enabled. * The libext2fs file system now uses readahead when opening file systems to speed up opening very large file systems with the meta_bg option. * If e2fsck logging is enabled, e2fsck will report the exit code in the last line of the log file. * Debugfs can now open file systems with a bad superblock checksum, and the show_super_stats command will print the expected checksum. * Fix a regression introduced in e2fsprogs 1.43.4 where tune2fs was not able to correctly enable the quota feature. (Closes: #855417) * E2fsck will only return an exit status code of 1 if it has fixed a file system corruption. If it only performed an optimal optimization of internal file system metadata, it will now return 0. * Fix e2fsck so it won't check inode fields of deleted inodes. * Removed a debugging printf in libsupport which could result to some extraneous and confusing output if the user specifies a quota type. * The debugfs logdump command now accepts a new -S option which will cause it to print information about the journal superblock. * Added a missing space in debugfs's ls -l output to separate the size and date fields. * Update the Czech, Danish, Dutch, French, Hungarian, Polish, Serbian, Spanish, Swedish, Ukrainian, and Vietnamese translations. (Closes: #862482) * Update various man pages. (Closes: #867895, #865584) * Fix various compiler and UBSAN warnings. * Remove obsolete Conflict/Replaces headers in control file (Closes: #866623) * Remove obsolete mips libraries used to build arcboot (Closes: #864144) -- Theodore Y. Ts'o Fri, 04 Aug 2017 01:13:34 -0400 e2fsprogs (1.43.4-2) unstable; urgency=medium * Re-enable metadata_csum for Debian (which was accidentally disabled for 1.43.4-1) -- Theodore Y. Ts'o Tue, 31 Jan 2017 19:54:55 -0500 e2fsprogs (1.43.4-1) unstable; urgency=medium * New upstream version * Fix e2fsck to require that the system.data extended attribute is always present even for files smaller than 60 bytes, to be consistent with the kernel * Drop the hard links for mkfs.ext4dev and fsck.ext4dev * Clarify/update various man pages (Closes: #852726) * Clarify the default for the "proceed?" question printed by mke2fs and tune2fs. (Closes: #852727) * Fix various Coverity warnings and other memory leaks in fuse2fs and extended attribute manipulation functions. * Add Finnish and Malay translations * Update Chinese, Czech, Polish, Serbian, and Spanish translations (Closes: #774379) -- Theodore Y. Ts'o Tue, 31 Jan 2017 17:31:52 -0500 e2fsprogs (1.43.4~WIP.2017.01.30-1) unstable; urgency=medium * Fix a bug which was causing mke2fs -d and fuse2fs to improperly handle Posix ACL's. * Fix a bug which could cause mke2fs -d to fail if there is an zero-length file in source directory tree. * Debugfs will now display project quota information. * Debugfs has a more friendly and powerful to print and set extended attributes. * Fix a bug in mke2fs where I/O errors weren't getting properly reported to the user. * Fix a bug in resize2fs when operating on very large file systems which have a block size different from the VM page size. * If the reported device size is absurdly large, mke2fs will now report an error instead looping forever or crashing. * Replace a test file in the sources with an updated version which has a DFSG-compliant copyright license. This was making lawyers nervous, even though the file was only used in regression tests and was never used when building any binaries. (Closes: #840733) -- Theodore Y. Ts'o Mon, 30 Jan 2017 22:14:07 -0500 e2fsprogs (1.43.3-1) unstable; urgency=medium * Fix e2fsck's handling of timestamps on 32-bit system (Closes: #836559) * E2fsck will sanity check and repair the extra isize fields in inodes and the superblock. * Fix sparc64 crashes when dereferencing unaligned integers in journal blocks when metadata checksums are enabled. -- Theodore Y. Ts'o Sun, 04 Sep 2016 20:41:21 -0400 e2fsprogs (1.43.2-2) unstable; urgency=medium * Fix build reproducibility problems * Don't hide the linker flags for e2fsck.static -- Theodore Y. Ts'o Thu, 01 Sep 2016 23:30:55 -0400 e2fsprogs (1.43.2-1) unstable; urgency=medium * Change the default journal size to be larger for file systems larger than 128 GB to improve performance on metadata-heavy workloads * Clarify tune2fs's message when the user needs to run e2fsck (Closes: #828022) * Fix an alignment bug in e2fsck which caused sparc64 architectures to crash when replaying the journal on file systems with a 64-bit block number * Fix a typo in debugfs when printing out the dtime field on file systems with an extended timestamp * Fix the logic in e2fsck which decides when to repair legacy negative timestamp encodings. * Add a command to debugfs to copy the inode structure from one inode to another * Fix resize2fs so it will not crash if there is an extended attribute block but it doesn't need to migrate any blocks during an off-line resize * Fix a crash when mke2fs or debugfs tries to copy in a directory hierarchy containing an empty directory * Fix a bug in e2fsck caused by a power failure during e2fsck's journal replay could leave the file system in a state where if the file system is mounted without doing a full e2fsck scan, the file system could get corrupted * Fix big endian bugs in the e2undo program * Fix debugfs's logdump so command so it can correctly handle journals which are larger than 2GB * Add new translations: Hungarian and Serbian * Update the Catalan, Chinese, Danish, Dutch, French, German, Polish, Swedish, Ukrainian translations -- Theodore Y. Ts'o Thu, 01 Sep 2016 00:55:13 -0400 e2fsprogs (1.43.1-1) unstable; urgency=medium * New upstream version * Fix the Direct I/O fallback code in the Unix I/O manager so it implements read-modify-write correctly. * The mke2fs program will now warn if the user specifies a label which is too long. (Closes: #791630) * Clean up various man pages (Closes: #766379, #761144, #770750, #428361, #766127) * Fix bug so that debugfs's rdump command works on the root directory (Closes: #766125) * Fix various Debian packaging issues (Closes: #825868) * Build fully security hardened binaries -- Theodore Y. Ts'o Tue, 07 Jun 2016 23:09:55 -0400 e2fsprogs (1.43-3) unstable; urgency=medium * Fix various debian packaging nits * Fix spelling mistakes in the copyright files * Fix various spelling mistakes in man pages * Fix project quota bugs in e2fsck and mke2fs * Build binaries with hardening support * Improve e2fsck messages when the journal superblock is corrupt and the user declines to fix the journal. (Closes: #768162) * Fix debugfs's handling of "set_bg checksum calc" on 64-bit file systems. * Simplify the debian rules file -- Theodore Y. Ts'o Wed, 25 May 2016 00:51:33 -0400 e2fsprogs (1.43-2) unstable; urgency=medium * Update watch file to check for the GPG signatures * Use dh_update_autotools_control to update config.{guess,sub} automatically when building the package. * Only try to run update-initramfs if it exists * Transition to dbgsym packages -- Theodore Y. Ts'o Fri, 20 May 2016 14:07:40 -0400 e2fsprogs (1.43-1) unstable; urgency=medium * New upstream version * Fix or improve offset support in mke2fs, e2undo, and libext2fs * Update debian policy version to 3.9.8 -- Theodore Y. Ts'o Tue, 17 May 2016 01:04:28 -0400 e2fsprogs (1.43~WIP.2016.03.15-2) sid; urgency=low * Fix FTBFS on big-endian systems -- Theodore Y. Ts'o Thu, 17 Mar 2016 22:55:52 -0400 e2fsprogs (1.43~WIP.2016.05.12-1) unstable; urgency=medium * New upstream version * Clean up various man pages and usage messages * Fix up gcc and Coverity warnings * Stop building static binaries using dietlibc * Fix potential out-of-boundary memory access in resize2fs * Fix sparse_super2 bugs in mke2fs and resize2fs * The mke2fs program will now support multiple -O options * The e2image program now ignores checksum error so that debugging snapshots of a file system can be taken of a broken file system * E2fsck now more cleanly handles checksum errors while replaying the journal * Fix e2fsck to not try to set a UUID if the metadata_csum feature is enabled since this will break the checksums * Fix e2image so progress information won't get leaked to stdout * Fix bugs in "mke2fs -E offset=NNNN" (Closes: #803629) * Fix Hurd portability issues (Closes: #822576) * Update initramfs in e2fsprogs's postinst script so the initial ramdisk gets the updated e2fsprogs binaries (Closes: #804237) * Work around texi2dvi bug which can cause build failures (Closes: #822227) * E2fsck now prints "REBOOT SYSTEM" instead of "REBOOT LINUX" to assuage the sensibilities of Hurd users (Closes: #769838) -- Theodore Y. Ts'o Thu, 12 May 2016 00:18:45 -0400 e2fsprogs (1.43~WIP.2016.03.15-1) unstable; urgency=low * New upstream release * Fix resize2fs bug that could leave block allocation bitmaps uninitialized * The tune2fs program will ask the user for confirmation before starting dangerous operations if the terminal is available, and it will replay the journal if necessary * Fix a bug which in rare cases would cause e2fsck -fD to corrupt an extent-mapped directory. * E2fsck will now check for extent mapped inodes with no extent header and clear them if found * E2fsck now checks to make sure the extended attribute header doesn't result in the xattr extending beyond the bounds of the inode * Teach mke2fs to parse a human-readable argument for -i option * Teach mke2fs to automatically handle creating file systems > 500T by automatically enable the meta_bg feature * Mke2fs will now prompt for user verification before rewriting a file system's superblock using the -S option * Mke2fs no longer complains if the user tries to create a file system using the entire block device (e.g., without using a partition). The minor number convention is not used by all block devices, and it's quite normal in some circumstances to create a file system on /dev/sdc instead of /dev/sdc1 * Debugfs now can properly display and set extended timestamps * Add an ext2/3/4 FUSE server * Fix an "mke2fs -d" bug which could create inodes with invalid extended attribute blocks * Fix miscellaneous file encryption bugs * Fix miscellaneous MMP bugs in debugfs * The e2fsck program will no longer update the quota inodes when it is interrupted * The filefrag program now accounts for holes in sparse files created by the file punch operation as an expected/optimal mapping * Clean up gcc/clang warnings * Add support for the checksum seed feature * Add support for the project quota feature * Add fallocate support to libext2fs and to debugfs * Clean up various man pages (Closes: #798425) * Update debian policy compliance to 3.9.7 -- Theodore Y. Ts'o Tue, 15 Mar 2016 01:34:14 -0400 e2fsprogs (1.43~WIP.2015.05.18-1) unstable; urgency=low * Merge in updates from the maint branch (changes from 1.42.13) * Add support for file encryption feature * Mke2fs will now create file systems with metadata_csum and 64bit enabled by default. * The resize2fs command can now convert file systems between 64-bit and 32-bit mode. * The new undo file format is much faster/efficient than before * E2fsck now has readahead support to speed up its behavior on RAID arrays. * E2fsck can now rebuild/optimize inode extent trees -- Theodore Y. Ts'o Mon, 18 May 2015 01:47:43 -0400 e2fsprogs (1.42.13-1) unstable; urgency=low * New upstream version * NMU acknowledge (Closes: #778948) * Fixed a bug which could cause e2fsck to corrupt Hurd file systems. (Closes: #760275) * Fixed a deadlock which occurs when using systemd and e2fsck.conf's logging feature. (Closes: #775234) * Fixed a bug which could cause programs using libext2's inode table scanning functions from crashing on certain corrupted file systems. (Closes: #773795) * Fixed dumpe2fs so it won't crash if the user doesn't specify a block device (file system). (Closes: #764293) * Fixed e2fsck so if it notices unexpected HTREE blocks in pass 2, it will report the correct directory inode containing the inconsistency. * If e2fsck fails to grow the dir_info structure due realloc(3) not having enough memory, it will now fail with explanatory message instead of staggering on failing with a confusing internal error messages. * The tune2fs program will zero out the superblock journal backup information when removing a journal from a file system. * The mke2fs program now enables the large_file feature by default. * Fixed a bug which could cause badblocks to crash if there are millions and millions of bad blocks. * Fixed some use-after-free bug in resize2fs and e2fsck. * Fixed some bigendian bugs that had crept into both indirect and extent handling inside libext2fs. * Updated/fixed various man pages. * Update Esperanto, German, and Spanish translations. Added Danish translation. -- Theodore Y. Ts'o Sun, 17 May 2015 20:38:27 -0400 e2fsprogs (1.43~WIP-2015-03-29-1) unstable; urgency=low * Merge in updates from the maint branch (changes from 1.42.12-1) * Add support for inline directories * Add support for the jbd2 checksum v3 format * New dumpe2fs format * Add support for file encryption feature -- Theodore Y. Ts'o Sun, 14 Dec 2014 22:49:03 -0500 e2fsprogs (1.42.12-1.1) unstable; urgency=high * Non-maintainer upload by the Security Team. * Fix CVE-2015-1572: incomplete fix for CVE-2015-0247 (closes: #778948). -- Michael Gilbert Sun, 22 Feb 2015 01:50:57 +0000 e2fsprogs (1.42.12-1) unstable; urgency=low * New upstream version * Fix various e2fsck bugs when trying to repair bigalloc file systems. * E2fsck can now repair a file system with an overly large s_first_meta_bg field, which had previously caused all e2fsprogs programs to crash when trying to open such a file system. * Fix e2fsck so that it can correctly fix a number of rare file system corruptions that were discovered when using a file system fuzzer. * Fix e2fsck so it does not try to write back block group descriptors if they have not been modified. * The mke2fs program will now place metadata blocks in the last flex_bg so they are contiguous. This reduces free space fragmentation in a freshly created file system, as well as allowing mke2fs commands which request extremely large flex_bg size to succeed. * Mke2fs now creates hugefiles more efficiently (with fewer extent tree blocks). * Fix a 32/64-bit overflow bug that could cause resize2fs to loop forever. * Reduce the memory consumption of resize2fs for very large file systems. * Fix a bug that could cause resize2fs to create a corrupted file system when shrinking a very large file system (typically > 16TB) that had been previously grown using resize2fs. (Closes: #756922) * Fix tune2fs updating UUID's when manipulating file systems with external journals (both the file system and journal UUID). * Fix tune2fs so it can remove an external journal for file systems with a 1k block size. * Add a new debugfs command, "inode_dump", which prints the inode in hex and ASCII format. * The debugfs command "set_inode_field" will now automatically allocate blocks for indirect blocks and extent tree blocks. * Fix debugfs's "set_inode_field" so can properly handle "block[IND|DIND|TIND]". * The debugfs "rdump" command will now take multiple source arguments. * Fix debugfs's argument parsing for the freefrag command. * Fixed a double close(2) bug in "rdump" and "rdump -p". * Fix filefrag to properly handle using the FIBMAP ioctl (with -B). * e4defrag will now defrag backwards-allocated files * Clarified messages that were confusing users in debugfs, e2fsck, mke2fs, and resize2fs (Closes: #758029, #757543, #757544) * Dumpe2fs will now complain if extra arguments are given to it. (Closes: #758074) * Update/clarify various man pages (Closes: #726760) * Update Czech, Dutch, French, Polish, Spanish, Swedish, Ukrainian, and Vietnamese translations -- Theodore Y. Ts'o Fri, 29 Aug 2014 08:50:48 -0400 e2fsprogs (1.42.11-2) unstable; urgency=low * Don't try to build lib/ext2fs/tst_ext2fs unless running "make check"; this fixes a MIPS FTBFS problem because mips has a special no-pics build needed for bootloaders where we only build libext2fs but not libss or other libraries (Closes: #754605) * Update French translation -- Theodore Y. Ts'o Sun, 13 Jul 2014 16:18:27 -0400 e2fsprogs (1.42.11-1) unstable; urgency=medium * New upstream version * NMU acknowledge (Closes: #752107) * mke2fs can now create hugefiles which are aligned to the beginning of the disk (instead of relative to the beginning of the partition), controlled via a mke2fs.conf configuration parameter. * Fix a bug which caused e2fsck to abort a journal replay on a file system with bigalloc enabled. (Closes: #744953) * Fix mke2fs so it more correctly handles large flex_bg counts * Mke2fs will check the kernel version number and not just the sysfs feature flag to determine whether it is safe to enable lazy inode table initialization, so it won't get faked out if the ext4 is compiled as a module which hasn't happened to be loaded yet. * E2fsck will now automatically fix a last mount time or last write time which is in the future in preen mode. * Mke2fs will now check the file system revision number requested by the command line, and reject it if it is too large. * If filefrag runs into an error, it will continue processing the rest of the files specified on the command line, but then exit with an error code. * Filefrag now prints some additional new flags (such as FIEMAP_EXTENT_ENCODED), and print unknown flags as hex values. * Fixed support in filefrag for files with > 2**32 blocks on 32-bit platforms. * Fixed a file descriptor leak in debugfs when copying files. * Add Esperanto and Ukrainian translations, and update Czech, Dutch, French, German, Italian, Polish, Swedish, and Vietnamese translations. * Fixed cross-compilation support. (Closes: #753375) * Update/fix various man pages -- Theodore Y. Ts'o Wed, 9 Jul 2014 23:43:27 -0400 e2fsprogs (1.42.10-1.1) unstable; urgency=medium * Non-maintainer upload. * Add patch from upstream git that fixes creating filesystems in files larger than 2GB on 32 bit architectures (Closes: #752107) -- Hilko Bengen Sat, 21 Jun 2014 12:57:25 +0200 e2fsprogs (1.43~WIP-2014-02-04-1) unstable; urgency=low * Merge in updates from the maint branch (changes from 1.42.10-1) -- Theodore Y. Ts'o Wed, 04 Feb 2014 23:31:56 -0500 e2fsprogs (1.42.10-1) unstable; urgency=medium * New upstream version * The mke2fs program no longer requires a force (-F) option when when creating a file system in a regular file, since this is a very common use case when managing virtual machine images * The mke2fs program will now ask for confirmation before wiping out a pre-existing file system, partition label, or physical volume * Fix e2fsck so that it properly handles an inconsistent quota inode. Previously the quota inode could be completely corrupted, and missing quota records could be not noticed * Fix mke2fs so if packed metadata blocks are enabled that the block group checksum are set correctly * Debugfs has new commands to allow the quota inode to be queried directly * Tune2fs will allow removal of dirty journal with two "-f" options (Closes: #559301) * Fixed some off-line resize2fs bugs when relocating metadata blocks when growing or shrinking bigalloc file systems * Fixed resize2fs's calculation of the minimum required file system size. This allows resize2fs -M to shrink the file system more aggressively * Fixed resize2fs to properly handle shrinking a very large and empty file system to a very very small size * Fixed e4defrag to work with 64-bit and bigalloc file systems * Fixed e2fsck to not issue a large number of very scary (but harmless) corruption messages when checking very large file systems when the file system has more inodes than the number of seconds since January 1, 1970. * E2fsck will now check the whole file system if file system problems are detected during its initial "pass 0" sanity check * Filefrag now prints the "shared extent" flag which is used by some file systems such as btrfs * The mke2fs program would previously correctly omit the resize_inode feature when creating a file system > 16TB when the fs size was determined automatically. It will now also do the right thing when the user explicitly specifies the file system size. * The message printed by logsave is now much less scary (Closes: #468821) * Fix spelling typo in the package descriptions * Update Czech, Dutch, French, German, Polish, Spanish, Swedish, and Vietnamese translations (Closes: #703048) * Update/fix various man pages * Fix debian/rules compatibility problem with GNU make 4.0 -- Theodore Y. Ts'o Sun, 18 May 2014 22:54:38 -0400 e2fsprogs (1.42.9-3) unstable; urgency=medium * Add the ability for mke2fs to create hugefiles * Add support for the sparse_super2 compat feature * Mke2fs can now force all of the metadata blocks to be at the beginning of the file system * Fix loopback mount detection (Closes: #497984) * Add support to mke2fs to create a file system at an offset (Closes: #417385) * Mention badblocks in the package description (Closes: #718725) * Update/fix various man pages (Closes: #719184, #719189) * Improve e2fsck's "superblock corrupt" message (Closes: #719185) * Miscellaneous Coverity clean ups -- Theodore Y. Ts'o Tue, 04 Feb 2014 22:17:22 -0500 e2fsprogs (1.42.9-2) unstable; urgency=low * Fix lintian warning: debian-changelog-has-wrong-weekday * Fix lintian warning: non-standard-dir-perm by using dh_strip's --dbg-package option instead of manually managing the debug files * Fix printf type format mismatch in e2image * Improved debugfs's error reporting when parsing block numbers * Use consistent configure options across the multiple e2fsprogs builds; this means that e2fsck.static will now use the blkid library shipped with util-linux, instead of the internal one shipped with the e2fsprogs sources. -- Theodore Y. Ts'o Mon, 30 Dec 2013 16:56:50 -0500 e2fsprogs (1.42.9-1) unstable; urgency=low * New upstream version * NMU ack (Closes: #698879) * Fix cross-build support (Closes: #721365) * mke2fs will detect an attempt to create a file system on a loop-mounted image file * Fixed a large number of bugs in resize2fs, e2fsck, debugfs, to handle bigalloc and 64-bit file systems. * Tune2fs will no longer allow changing the uuid on a mounted file system with the uninit_bg feature enabled. * E2fsck will properly allocate a new extent tree block in the rare case where one is needed when rehashing an extent-mapped directory. * Mke2fs will now properly set the LARGE_FILE feature when creating a journal > 2GB. * Debugfs will now correctly handle free a range of inodes using the freei command. * E2fsck will no longer complain if an external journal was exactly 2**32 blocks. * E2fsck will not longer try to add a missing lost+found directory when run in read-only mode. * Fixed some buffer overrun bugs when creating standard e2image files * Mke2fs will not try to set both the meta_bg and resize_inode feature when the extended option "-E resize=NNN" is specified by the user. * Dumpe2fs will no longer abort when trying to print the journal information from an e2image-created image file. * Debugfs's "write" command can now create a sparse files * Debugfs can now support a command line which is up to 8k long * E2image will refuse to create a raw or qcow2 image using a mounted file system unless the -f option is given. * E2image has been made more useful for efficiently copying file systems using the -ra options. New options to help with this use case that were added: -o, -O, -p, and -c. * Fixed a regression introduced in 1.42.8 which would cause e2fsck to erroneously report uninitialized extents past i_size to be invalid. * Fixed cases where resize2fs could corrupt a file system, especially when shrinking a file system. (Closes: #660793) * Fixed resize2fs and e2fsck to not crash when operating on a file system with the MMP feature enabled. * Fixed debugfs's write command to properly create a zero-length file (instead of creating an invalid inode). * Fixed e2fsck to not crash when trying to delete an invalid extent-mapped symlink. * Improved debugfs's help texts * Fixed a potential integer overflow problem in e2freefrag (Closes: #718205) * The config.guess and config.sub files have been updated to the latest to help with the ppcle port. (Closes: #732076) * Updated/fixed various man pages. (Closes: #586218, #669730, #698076, #731329) -- Theodore Y. Ts'o Sat, 28 Dec 2013 23:18:36 -0500 e2fsprogs (1.42.8-1) unstable; urgency=low * New upstream version * Work around Debian Bug #712530 (Closes: #708307) * Fix e2fsck so it can check a read-only root file system with an external journal. (Closes: #707030) * Fix off-line resizing of file systems with flex_bg && !resize_inode (Closes: #696746) * Change mke2fs so that it does not set the root directory to the real uid/gid of the mke2fs process. Add the extended option root_owner to override this behavior. * If an invalid journal size is given to mke2fs, it will now complain and exit sooner. * Fix resize2fs when shrinking file systems to make sure that bitmap blocks aren't left outside the bounds of the shrunken file system. This could happen with flex_bg file systems that were grown using the old online resizing algorithm. * E2fsck will now detect and repair corrupted extent trees which contain invalid extents at the end of the extent tree leaf block. * E2fsck will now longer complain about zero length extended attribute values. * Fix a regression introduced in e2fsprogs v1.42 which caused e2image -s to crash. * Add safety check so tune2fs will not attempt to set the inode size to be larger than the block size. * Enhance chattr to allow clearing the extent flag if the kernel allows it * Fix e2image with large (> 32-bit) file systems (Closes: #703067) * Mke2fs will not give warnings about the bigalloc and quota options in quiet mode. * Debugfs was erroneously giving spurious error messages for certain extent_inode subcommands which take arguments (split_node, replace_node, and insert_node). This has been fixed. * Fix the parsing of the 's' (sectors) in parse_num_blocks2, which among other programs is used by mke2fs. * Fix texinfo incompatibilities (Closes: #712365) * Updated/fixed various man pages (Closes: #712429, #712430, #707609) * Update German translation -- Theodore Y. Ts'o Thu, 20 Jun 2013 23:09:25 -0500 e2fsprogs (1.42.7-1) unstable; urgency=low * New upstream version * Add warning indicating that the quota and bigalloc features are still under development. * Added new options to filefrag to be consistent with the version from Lustre * Optimized e2fsck's CPU utilization * Fixed e2fsck so it detects and fixes inconsistencies in the interior nodes of an inode's extent tree * Fixed a potential memory corruption failure in e2fsck's error path if the call to ext2fs_open2() fails. * Fixed e2fsck if its logging function is enabled in e2fsck.conf, and the resulting file name for the log file is longer than 100 bytes, that it properly handles this situation instead of crashing. * E2fsck will now report the amount of memory that it attempted to allocate when a memory allocation request fails, to make it easier to track down the problem. * Fixed a bug in resize2fs which could cause severe file system corruption when growing an ext4 file system which was formatted with fewer-than-normal reserved gdt blocks * Fixed resize2fs to be able to handle off-line resizes of file systems with the flex_bg feature and without any reserved gdt blocks or if the file system did not have the resize_inode feature * Further optimize resize2fs so it doesn't use quite as much CPU when resizing very large file systems. * Fixed 32-bit overflow bugs which could cause resize2fs to fail and possibly corrupt the file system while resizing 64-bit file systems. * Fixed a big which could cause resize2fs to corrupt bigalloc file systems. * Fix a crash while mke2fs is parsing "-E resize=NNN" with the 64bit file system feature enabled * Added better error checking to mke2fs to check for invalid parameters when creating bigalloc file system. * When creating bigalloc filesystems, the -g option to mke2fs will now specify the number of clusters per block group. * Added the "symlink", "zap_block", "block_dump", and "extent_open" commands to debugfs * Fixed debugfs's htree command so that all its messages are sent through the pager. * Fixed debugfs's dump_file and cat functions so they work correctly on file systems with a block size greater than 8k. * Fixed mke2fs's handling of the mmp_update_interval option * Fixed e2freefrag so it works on 64-bit file systems, and so it uses much less memory. * E2image can now include all data blocks in the e2image output file when the user specifies the -a option. * Fixed debugfs's mknod command so that it updates the block group statistics * Document the bigalloc feature in the mke2fs man page. (Closes: #669730) * Update Czech, Dutch, French, German, Polish, Swedish, and Vietnamese translations -- Theodore Y. Ts'o Tue, 21 Jan 2013 21:52:58 -0500 e2fsprogs (1.43~WIP-2012-09-22-1) unstable; urgency=low * Add metadata checksum feature -- Theodore Y. Ts'o Sat, 22 Sep 2012 21:50:20 -0400 e2fsprogs (1.42.6-1) unstable; urgency=low * New upstream version * Fix build dependencies to avoid requiring dc, and to allow cross-building to work (Closes: #677497) * Updated/fixed various man pages * Mke2fs will now update its progress indicators at most once a second to avoid overwhelming serial consoles. * Resize2fs will support lazy_itable_init, speeding up off-line growth of uninit_bg file systems. * Resize2fs now supports on-line resizing 64-bit file systems beyond 16TB. A number of bugs in resize2fs which prevented this have been fixed. * Resize2fs now correctly handles resizing 32-bit file systems to 16TB. * Fixed a potential segfault in e2fsck when there is an I/O error while reading the superblock. -- Theodore Y. Ts'o Fri, 21 Sep 2012 12:14:41 -0400 e2fsprogs (1.42.5-1.1) unstable; urgency=low * Non-maintainer upload. * e2fsck-static, e2fsprogs: let preinst remove a symbolic link in /usr/share/doc, that should have been replaced with a directory since 1.39+1.40-WIP-2006.10.02+dfsg-1. (Closes: #698879). -- Nicolas Boulenguez Fri, 22 Feb 2013 23:14:59 +0100 e2fsprogs (1.42.5-1) unstable; urgency=low * New upstream version * Mark the e2fsprogs package as Multi-Arch: foreign, so if a package foo:i386 depends on e2fsprogs and is installed on an amd64 system, the native e2fsprogs will satisfy the dependency. (Closes: #678395) * Fix a fd leak which could cause logsave (and hence a boot-time rc init script) to hang (Closes: #682592) * Fix a problem if e2fsck where if the root file system is mounted read-only, e2fsck would not clear an error indication in the journal superblock. Combined with a kernel bug, this would cause the e2fsck to check the file system after every single boot * Fixed filefrag so it would not seg fault on virtual filesystems such as /proc: e.g., "filefrag /proc/partitions" * Fix filefrag so that it correctly reports the number of extents * Fixed a bug which caused "mke2fs -N 256 -t ext4 /tmp/foo.img 256m" to write blocks out until /tmp filled * Fixed a bug in how e2fsck would uniquify directory entry names * Change e2fsck so it will allow file systems mounted read-only to be checked with the -f option. * Fix e2fsck so that the file system is marked as containing an error if the user chooses not to fix the quota usage information. * Fix tune2fs so that it correctly removes the quota feature when the last quota inode is removed. * Fix tune2fs so that after removing a quota inode, the block bitmap is updated; otherwise, e2fsck would complain after running 'tune2fs -O ^quota '. * Fix tune2fs so that when converting a file system from using legacy quota files to the new quota file system feature with hidden quota files, the accounting for these files is handled correctly so that e2fsck doesn't complain. * The e4defrag program now allows device symlinks, such as /dev/mapper/testvg-testlv, instead of insisting on less human-friendly names such as /dev/dm-2 * Updated/fixed various man pages (Closes: #680114) -- Theodore Y. Ts'o Sun, 29 Jul 2012 19:59:56 -0400 e2fsprogs (1.42.4-3) unstable; urgency=medium * Add the -C option to chattr's usage message * Fix e2fsprogs so it is blhc (build log hardening check) clean. This fixed e2fsck.static which previously was not getting built with the security hardening flags. -- Theodore Y. Ts'o Wed, 13 Jun 2012 16:03:24 -0400 e2fsprogs (1.42.4-2) unstable; urgency=medium * Fix FTBFS problem on the hurd and freebsd platforms -- Theodore Y. Ts'o Tue, 12 Jun 2012 18:26:40 -0400 e2fsprogs (1.42.4-1) unstable; urgency=medium * New upstream version * Fix 64-bit block number bugs in e2fsck, dumpe2fs, and debugfs which could corrupt file systems * Fixed e2fsck's handling of how errors propagate from the journal to the file system superblock * Fixed a false positive complaint from e2fsck if all of the extents in the last extent block are uninitialized and located after the end of the file. * dumpe2fs will display the journal's error indicator in the superblock if it is set * Fixed a bug which caused e2fsck to incorrectly use O_EXCLUSIVE in some corner cases. * Fix truncation of extent-mapped inodes in e2fsck and libext2fs * Fixed i_blocks accounting in bigalloc file systems. * Add support for btrfs's No_COW flag to lsattr and chattr * Debugfs interprets the date strings of the form "@ddd" as ddd seconds after the epoch * Updated/fixed various man pages (Closes: #674453, #674694) -- Theodore Y. Ts'o Tue, 12 Jun 2012 18:20:55 -0400 e2fsprogs (1.42.3-1) unstable; urgency=low * New upstream version * Fix bugs on 32-bit systems which could corrupt > 16TB file systems * Quiet complaints in e2fsck when the total free blocks or inodes are incorrect in the superblock after an system crash, since we don't update nor depend on the superblock summaries at each commit boundary * Fixed support for (hidden) quota files built into ext4; in particular, don't rewrite the quota inode unless the quotas are inconsistent * Optimized reading and writing bitmaps if direct I/O was enabled * Update Czech, Dutch, French, German, Polish, Swedish, and Vietnamese translations * Fixed incorrect indentation in tune2fs man page * Update debian policy compliance to 3.9.3 -- Theodore Y. Ts'o Mon, 14 May 2012 14:43:09 -0400 e2fsprogs (1.42.2-2) unstable; urgency=low * Fixed e2fsck.conf's man page (Closes: #646963) * Fixed 32-bit binary compatibility problem for the libext2fs shared library introduced in 1.42.2 * mke2fs will no longer fail if the /etc/mtab file is not present -- Theodore Y. Ts'o Mon, 09 Apr 2012 14:54:33 -0400 e2fsprogs (1.42.2-1) unstable; urgency=low * New upstream version * Fixed various man pages (Closes: #665427) * Speed up resize2fs for large file systems (Closes: #663237) * Be less strict about the EXT4_EOFBLOCKS_FL flag (which will eventually be going away in the ext4 file system format) * Teach mke2fs to use direct I/O if the -D option is given * Print errors returned by ext2fs_open2() and ext2fs_check_desc() so we can more easily diagnose memory allocation failures caused by insufficient memory and abort on memory allocation failures * E2fsck can now write log files containing the details of the problems that were found and fixed directly. * E2fsck can now limit the number of messages issued and printed on the console * The dumpe2fs, debugfs, and tune2fs now use rbtree bitmaps, which cause them to use much less memory for large file systems. * E2fsck will now check for zero-length extents, since older kernels will OOPS if they comes across one * Fix e2fsck's discard behavior so it does not discard too many blocks, and it will not use discard if the device advertises that discard does not persistently zero data. Also, if e2fsck is run in read-only mode, do not try to discard data. * Fix mke2fs -S so it does not corrupt the first block group's information. * Add pointer for e2fsprogs-udeb to libcomerr2.shlibs (Closes: #665885) -- Theodore Y. Ts'o Tue, 27 Mar 2012 15:55:57 -0700 e2fsprogs (1.42.1-2) unstable; urgency=low * Fix the fact that dpkg-buildflags was being ignored due to a bash'ism in debian/rules. * Check the new /sys/class/power_supply/AC/online since /proc/acpi/ac_adapter/... is deprecated and may not be present on newer kernels. -- Theodore Y. Ts'o Mon, 20 Feb 2012 19:12:20 -0500 e2fsprogs (1.42.1-1) unstable; urgency=low * New upstream release * dpkg-buildflags is now used if it is present. This allows Debian Wheezy to build with security hardened build flags. (Closes: #654457) * mke2fs and e2fsck now use much less memory for large file systems * Fixed mke2fs -S so it can be usefully used as a last ditch recovery command when for ext4 filesystems that have the uninit_bg feature enabled. * The mke4fs argv[0] is now recognized by mke2fs. * Fixed usage and help messages for mke2fs. * Eliminated spurious bad block group checksum warnings when e2fsck falls back to using the backup group descriptors. * Debugfs's ncheck command is now much more useful when used to diagnose badly corrupted file system. Added a new -c option. * Fixed bug in e2image which could cause it to fail to set i_size correctly if the last hole in the file is an exact multiple of a megabyte. * Fixed a bug with resize2fs where for 1k and 2k file systems, the minimum file size used for resize2fs -M could be a block too small. * Fixed the badblocks program to honor the -s flag when in read-only -t mode. (Closes: #646629) * Update Czech, Dutch, French, Polish, and Swedish translations -- Theodore Y. Ts'o Fri, 17 Feb 2012 15:07:13 -0500 e2fsprogs (1.42-1) unstable; urgency=low * New upstream release * Fixed hurd FTBFS (Closes: #649689) * Optimized e2fsck speed on large file systems when using [scratch_files] * Fixed e2fsck handling of blocks claimed by multiple inodes in bigalloc file systems * Fixed e2fsck's calculation of max file size for non-extent based files when huge_file is enabled * Update Czech and Swedish translations -- Theodore Y. Ts'o Tue, 29 Nov 2011 15:50:07 -0500 e2fsprogs (1.42~WIP-2011-11-20-1) unstable; urgency=low * New upstream release * Fix error checking so resize2fs works when using a 32-bit userspace and a 64-bit kernel (Closes: #644989) * e2fsck now returns additional status bits in its exit code if it aborts early in the e2fsck run * Fix potential stack overflow in debugfs * Avoid an infinite loop in ext2fs_find_block_device() if there are symlink loops in /dev caused by a buggy udev * Fix test failures on big-endian systems * Fix gcc -Wall complaints * Add freefrag and e2freefrag commands to debugfs * Add a read-only, metadata-only debugfs command called rdebugfs * Improve first-class quota support * Fix bigalloc support in e2freefrag * Clean up mmp handling * Fix a regression which caused mke2fs to not work correctly on files > 2GB. (Closes: #647245) * Fix a namespace leak in libext2fs (tdb_null) -- Theodore Y. Ts'o Sun, 20 Nov 2011 21:32:49 -0500 e2fsprogs (1.42~WIP-2011-10-16-1) unstable; urgency=low * New upstream release * Fix online resizing with resize2fs (Closes: #644989) * Fix bug which caused shrinking an empty file system file system to its minimal size to sometimes fail. * Don't look at the high 16 bits of i_file_acl if the 64-bit feature is not enabled; this fixes a Hurd compatibility field since this is used for the high 16 bits of i_mode on Hurd. * Update Swedish, Polish, French, German, and Czech translations -- Theodore Y. Ts'o Sun, 16 Oct 2011 22:07:03 -0400 e2fsprogs (1.42~WIP-2011-10-09-1) unstable; urgency=low * New upstream release * Fixed infinite loop in filefrag (Closes: #644792) * Fixed various spelling and translation problems * Fixed various man pages * Fixed 64-bit block numbers in e2fsck's journal replay * Fixed mipsel FTBFS that was fixed for mips * Update Swedish, French, and Czech translations * Convert to debian source 3.0 (quilt) format -- Theodore Y. Ts'o Sun, 09 Oct 2011 22:24:31 -0400 e2fsprogs (1.42~WIP-2011-10-05-2) unstable; urgency=low * Fix portability issues with non-Linux platforms and for the mips platform, which does some really strange things vis-a-vis 32/64-bit support without actually having a 64-bit version of the architecture (Closes: #644502) * Fix dependency problem which causes the newer version of libcom_err2 to get pulled in when upgrading to e2fsprogs, which needs the new interface exported by libcom_err2. (Closes: #644425, #644584) -- Theodore Y. Ts'o Fri, 07 Oct 2011 18:27:06 -0400 e2fsprogs (1.42~WIP-2011-10-05-1) unstable; urgency=low * Update translations: German (Closes: #520985) * Fixed usage and error text for mke2fs -C option * Updated e2fsprogs.pot file for translators * Added support for internationalized error strings for libcom_err * Fixed various portability nits that were causing FTBFS problems on Hurd and FreeBSD * Added "big" and "huge" types to mke2fs.conf, since they are needed for very large file systems * Fixed on-line resizing which had been broken in the 1.42 series (Closes: #451388) -- Theodore Y. Ts'o Wed, 05 Oct 2011 02:10:53 -0400 e2fsprogs (1.42~WIP-2011-10-01-2) unstable; urgency=low * Update translations: French, German (Closes: #620659) * Fix compilation problems in hermetic environments * Fix on-line resizing in resize2fs (Closes: #451388) * Add definitions for "big" and "huge" filesystems to /etc/mke2fs.conf * Fix mke2fs when there are more than 2**32 block groups -- Theodore Y. Ts'o Tue, 04 Oct 2011 00:04:25 -0400 e2fsprogs (1.42~WIP-2011-10-01-1) unstable; urgency=low * New upstream release * Avoid unnecessary reboots when checking the root fs in some special cases * Fix an off-by-one error in filefrag -v's output * Make filefrag display the number of contiguous (not physical) extents (Closes: #631498) * Clarify the mke2fs.conf.5 man page (Closes: #634883) * Add a hurd-specific mke2fs.conf file (Closes: #629355) * mke2fs will set s_max_mnt_count to -1 instead of 0 by default to work around a bug in pre-3.0 kernels which caused a spurious message to be printed when the file system was mounted (Closes: #632637) * Fixed portability problems which was causing build failures on non-Linux/non-x86 systems. * Verify that the bad block inode looks sane before trusting it, to avoid it causing more harm than good. * Fixed the debian/rules file so that it build successfully if DEB_BUILD_OPTIONS contains "nostrip" (Closes: #627535) * Fixed some big-endian bugs in the MMP code -- Theodore Y. Ts'o Fri, 30 Sep 2011 22:33:41 -0400 e2fsprogs (1.42~WIP-2011-09-25-1) unstable; urgency=low * New upstream release * Fix FTBFS on big-endian architectures (Closes: #641838) * Add support for multiarch (Closes: #632169) * Clarify and update debian/copyright file (Closes: #614662) * Add support for Multi-Mount Protection (MMP) * Allow tune2fs to remove the external journal if the device is not found * Updated/clarified man pages (Closes: #642193) * Fix a potential FTBFS caused by overly long compile lines (Closes: #629883) -- Theodore Y. Ts'o Sun, 25 Sep 2011 01:28:34 -0400 e2fsprogs (1.42~WIP-2011-09-16-1) unstable; urgency=low * New upstream release * Added support for the integrated quota feature * Improved 64-bit and bigalloc support * Mke2fs and tune2fs now allows setting the stride and stripe width to zero * Fixed tune2fs's mount options parsing (Closes: #641667) * Fixed an ABI compatibility problem which broke the dump program (Closes: #636418) * Resize2fs has forward compatibility for a new on-line resize ioctl for > 16TB file systems. * Fixed a (very hard to hit) bug that could cause e2fsck to crash in pass 1 or pass 2 * Debugfs has a new 'blocks' command * Mke2fs now gives a warning if the auto-detected block size exceeds the page size * Mke2fs and e2fsck now tries to use the punch hole command as a "discard" when operating on normal files * Mke2fs will not try to do any discard operations if -n is specified on the command line * Updated/clarified man pages (Closes: #639411) * Fixed parsing of MNTOPT_ options for tune2fs and debugfs (Closes: #641667) -- Theodore Y. Ts'o Fri, 16 Sep 2011 10:33:59 -0400 e2fsprogs (1.42~WIP-2011-07-02-1) unstable; urgency=low * New upstream release * Add support for 64-bit file systems * Add support for bigalloc file systems * Fixed an e2fsck bug which caused "*** FILE SYSTEM WAS MODIFIED ***" without an explanation of what was fixed. * E2fsck will no longer attempt to clone an extended attribute block in pass1b handling if the file system does not support extended attributes. * E2fsck will be more careful accidentally asking the user to continue if the file system is mounted, so that an escape sequence won't cause a false positive. (Closes: #619859) * E2fsck now uses less cpu time in pass 5 * E2fsck will no longer segfault when a corrupted file system has a bad extent, and removing it leads to a block needing to be deallocated. * E2fsck now supports an extended "discard" option which will cause e2fsck to attempt discard all unused blocks after a full check * The e2image program now supports the qcow2 format, a more efficient way of capturing file system metadata snapshots. * Mke2fs now supports the [devices] stanza in mke2fs.conf. * Mke2fs now supports the reserved_ratio relation in mke2fs.conf. * Mke2fs now creates extent-mapped directories for the root and lost+found directories. * Mke2fs will skip zero'ing the journal if the extended option "lazy_journal_init" is specified. * Mke2fs will now create file systems that enable user namespace extended attributes and with time- and mount count-based file system checks disabled. * Mke2fs will not set a stride or strip size of one block based on block device attributes obtained from sysfs. * Mke2fs now displays a progress report during the discard process. * Mke2fs now handles extreme file system parameters correctly which previously caused the inodes per group to drop below 8, leading to a segfault. * Debugfs's icheck will now correctly find inodes which use the searched-for block as an extended attribute block. * Debugfs now has a new "punch" command which remove blocks from the middle of an inode. * The badblocks program now correctly recovers from I/O errors when direct I/O is being used. The badblocks command now also supports a -B option which forces the use of buffered I/O, and the -v option will provide a more detailed breakdown of read, write, and failed comparison errors. * Added e4defrag tool which uses the EXT4_IOC_MOVE_EXT ioctl. * Added support for journals larger than 2GB. * Support using both hard links and symlinks when installing e2fsprogs. * Add overflow checking to tune2fs -i's fsck interval, which must fit in a 32-bit field. * Filefrag will report 0 extents correctly in verbose mode. * Logsave's usage message has been fixed. (Closes: #619788) * Update translations: French, Chinese, Germany, Indonesian, Swedish, Vietnamese, Polish, Dutch, Czech. * Updated/clarified man pages. -- Theodore Y. Ts'o Sat, 02 Jul 2011 22:38:57 -0400 e2fsprogs (1.41.14-1) experimental; urgency=low * New upstream release * Fixed a FTBFS on big-endian architectures * Fixed spurious warning in mke2fs * resize2fs now works correctly on devices exactly 16TB * resize2fs will no longer clear the resize_inode feature when the number of reserved GDT blocks reaches 0. This allows a file system with the flex_bg feature to be subsequently shrunk. * e2fsck will no longer use the extended rec_len encoding for file systems whose blocksize is less than 64k, to catch fs inconsistencies which the kernel will complain about. -- Theodore Y. Ts'o Wed, 22 Dec 2010 18:39:19 -0500 e2fsprogs (1.41.13-1) unstable; urgency=low * New upstream release * E2fsck can now do journal-only replays via "e2fsck -E journal_only" * E2fsck now understands UUID= and LABEL= specifiers for the -j option (Closes: #559315) * E2fsck.conf now supports a new config option, which forces the problem not to be fixed: problems/ Mon, 22 Nov 2010 16:00:50 -0400 e2fsprogs (1.41.12-2) unstable; urgency=high * Allow tune2fs to set uninit_bg without requiring an fsck * Fix test in e2fsck to correctly check for EOFBLOCKS files * Fix dependencies for libuuid and libblkid (Closes: #583551) -- Theodore Y. Ts'o Thu, 03 Jun 2010 09:30:36 -0400 e2fsprogs (1.41.12-1) unstable; urgency=low * New upstream release * mke2fs now gives the correct error message if the external journal is device is not found * The resize2fs program will refuse to print the minimum size needed for a file system if it is not clean. * E2fsck now tests for extents that begin at physical block 0 and rejects them as invalid. * Fixed a bug in e2fsck which could cause it to crash when trying to remove an invalid extent and the block bitmaps hadn't yet been loaded. * E2fsck will now completely skip time-based checks if the system clock looks insane or if the broken_system_clock option is set in /etc/e2fsck.conf. (Closes: #549861, #540152) * Fixed a bug in e2fsck which caused e2fsck to complain about i_blocks with a 4T file created using posix_fallocate() * E2fsck will now correctly mark a sparse journal as invalid and will delete and recreate the journal to address the problem. * Fixed e2fsck not to ask permission from the user to abort if it's going to abort regardless of what the user is going to say... * E2fsck can now continue even if it fails to recreate the resize inode * E2fsck will now avoid removing directory entries for inodes found in the unused region of the inode table until after it restarts the fs check to avoid removing valid data. * E2fsck will now longer try to set the block group checksums if it is interrupted. * Mke2fs will check both the physical and logical blocksizes of a device to better support 4k sector drives. * Mke2fs will accept the valid (but rarely useful) flex_bg size of 1 * E2fsck will check for cases where the EOFBLOCKS_FL is set when it is not needed, and offer to clear it. * The com_err library will now only output a CR character if the stderr is connected to a tty in raw mode. * Update Czech, Chinese, Dutch, French, Germany, Indonesian, Polish, and Vietnamese translations (from the Translation Project) * Add an fsck.ext4 symlink in the e2fsprogs-udeb package (Closes: #571247) * Fix makefile dependency so dpkg-buildpackage -j2 works (Closes: #563487) -- Theodore Y. Ts'o Mon, 17 May 2010 19:43:52 -0400 e2fsprogs (1.41.11-1) unstable; urgency=medium * New upstream release * Add Heimdal function com_right_r() to libcom_err (Closes: #558910) * Allow e2fsck to run even if the physical device has more than 2**32 blocks * Debugfs's "logdump -b " now properly shows the allocation status of the block . (Closes: #564084) * Make e2fsck's "the filesystem is mounted" message is now more scary to hopefully dissuade users from thinking, "surely that message doesn't apply to *me*" :-( * e2fsck -n will now always open the file system read-only. We now disallow certain combination of options which previously were manual exceptions; this is bad because it causes users to think they are smarter than they really are. So "-n -c", "-n -l", "-n -L", and "-n -D" are no longer supported. * If the partition is badly aligned, have mke2fs just print a warning message and continue. Previously mke2fs would ask to confirm, and this broke distro installation scripts. * Fix a bug in libext2fs caused the creation of very large journals for ext4 to be _very_ slow. * E2fsck now understands the EOFBLOCKS_FL flag which will be used in 2.6.34 kernels to make e2fsck not complain about blocks deliberately fallocated() beyond an inode's i_size. * Fix a bug in e2fsck which could cause e2fsck -D to corrupt non-indexed directories. (Closes: #572453) * debian/rules: can be compiled statically with stack protector now. (Closes: #573923) * Update debian policy compliance to 3.8.4 -- Theodore Y. Ts'o Mon, 15 Mar 2010 00:16:35 -0400 e2fsprogs (1.41.10-1) unstable; urgency=low * New upstream release * Fix resize2fs bug which causes it to access invalid memory * Add libss support for libreadline.so.6 * Fix e2fsck's check for extent-mapped directory with an incorrect file type * Add new e2fsck.conf configuration option: default/broken_system_clock for system with broken CMOS hardware clocks. (Closes: #559776) * Fix flex_bg inode table placement algorithm used by mke2fs for certain specific file system sizes * Add source lintian overrides for weak-library-dev-dependency * Fix FTBFS problem caused by texi2html changing (again) its output location. (Closes: #552934) * Make e2fsck to avoid rehashing directories which can fit in a single directory block. * Fix how e2fsck fixes sparse directories which are extent-mapped. * Fix some big-endian bugs in e2fsck and libext2fs * Teach e2fsck to detect and fix sparse extent-mapped directories * Fix filefrag from core dumping on file systems with 8k block sizes * E2fsck was depending on i_size to be correct to detect and fix certain directory problems before actually fixing the directory's i_size. This caused certain rare corruptions to require two runs of e2fsck to address. * Update Czech, Indonesian, Polish and Vietnamese translations (from the Translation Project) * Fix e2fsck to find and correct duplicate directory entries in non-indexed directories. * Add support for calling BLKDISCARD to mke2fs. * Enhance libext2fs so it works around bug in Linux version 2.6.19 and earlier where the /proc/swaps file was missing the header on the first line. * Fix resize2fs so it works correctly on file systems with external journals * Fix libss so that it does not seg fault when using a readline library which does not supply a readline_shutdown() function. * Add a pre-depends for util-linux-ng (Closes: #551795) * Update and clarify various man pages. * Corrected dumpe2fs's usage message * Teach libext2fs to ignore the high 32 bits of the i_blocks field when huge_file file system feature is set, but the inode does not have the HUGE_FILE_FL flag set. * Change e2fsck to accept superblock times to be fudged by up to 24 hours by default. Most distributions have fixed their init scripts, but apparently now they have buggy virtualization scripts. :-( I give up, too many buggy user space set ups out there. (Closes: #557636) * Fix e2fsck to correctly print > 32-bit i_blocks numbers in problem reports * Improve e2fsck so it prints "Illegal indirect block" instead of "Illegal block #-1" * Teach mke2fs to get device topology information from blkid and use it to populate the superblock stride and stripe sizes and warn if the block device is misaligned * Fix a file descriptor leak in debugfs when sourcing a command file * Fix a file descriptor leak in fsck * Round up the bitmap size to prevent spurious segmentation faults on BSD platforms. * Fix resize2fs to correctly calculate the minimum size needed, when flex_bg is enabled, to prevent resize2fs -M from failing. * Dumpe2fs now displays more information about the contents of the journal * Make sure the libblkid1 and libblkid1-dbg packages have changelogs * On low memory systems, e2fsck can print some very scary looking error messages. Clean up them up to avoid user panic. (Closes: #509529) * Enhance blkid to support .ko.gz files in the modules.dep parser * Fix tune2fs -j for mounted exted-enabled file systems * Use the feature name "extent" instead of "extents" in mke2fs.conf. Both work, but the latter is what is documented in the man page. (Closes: #540111) -- Theodore Y. Ts'o Sun, 07 Feb 2010 20:56:47 -0500 e2fsprogs (1.41.9-1) unstable; urgency=low * New upstream release * Fix tune2fs -I to work correctly in the face of bad blocks and filesystems formatted for RAID arrays, and ENOSPC errors * Require the user to only answer one question instead of multiple ones for multiple bad block group checksums, or when an inode table needs to be moved. * Fix e2fsck to handle moving inode tables in FLEX_BG filesystems more gracefully by looking in the entire flex_bg for space, instead of just in the block group; if that doesn't work, try looking for space in the entire filesystem. * Fix the filefrag code to avoid printing the extent header if it needs to fallback to using the FIBMAP ioctl. * Fix filefrag to print the correct number of extents for zero-length files when using FIBMAP. (Closes: #540376) * Add a filefrag -B option to make it easier to debug the FIBMAP support. * Allow e2fsprogs programs to allocate from uninitialized block groups. * Add a new program, e2freefrag, which displays information about the free space fragmentation in an ext2/3/4 filesystem. * E2fsck will now print much fuller information when the last mount time or last written time is in the future, since most people can't seem to believe their distribution has buggy init scripts, or they have a failed CMOS/RTS clock battery. * Update French, Polish, Czech, and Swedish translation from the Translation Project. * Enhance debugfs's 'stat' command to print basic extent information for extent-mapped inodes, and add a new command, 'dump_extents' which prints detailed information about an inode's extent tree. -- Theodore Y. Ts'o Sun, 23 Aug 2009 10:08:52 -0400 e2fsprogs (1.41.8-2) unstable; urgency=low * Fix regression in ext2fs_extent_set_bmap() which caused e2fsck -fD to fail on ext4 filesystems if the directory needs to shrink by more than a block (Closes: #537510) * Fixed filefrag for non-extent based files * Fix use of apostrophe's in package descriptions * Don't use dietlibc when building for mips and mipsel architectures -- Theodore Y. Ts'o Mon, 20 Jul 2009 09:38:21 -0400 e2fsprogs (1.41.8-1) unstable; urgency=low * New upstream release * Fix resize2fs bugs when shrinking ext4 filesystems * Update debian policy compliance to 3.8.2 * Update package descriptions to mention ext3 and ext4 filesystems (Closes: #535530) * Update French, Polish, Czech, Indonesian, and Swedish translation from the Translation Project. * If the resize2fs operation fails, the user will be told to fix up the filesystem using e2fsck -fy. -- Theodore Y. Ts'o Sat, 11 Jul 2009 17:26:16 -0400 e2fsprogs (1.41.7-2) unstable; urgency=low * Fix online resizing using resize2fs (Closes: #535452) * Fix the filefrag program for files with more than 144 extents * Update and clarify various man pages. * Fix potential filesystem corruptions caused by using resize2fs to shrink filesystems with extents enabled. -- Theodore Y. Ts'o Tue, 07 Jul 2009 23:21:46 -0400 e2fsprogs (1.41.7-1) unstable; urgency=low * New upstream release * Fix memory leaks in e2fsprogs, including a very large memory leak which can cause e2fsck to run out of memory when checking very large filesystems using extents. * Fix a bug in libext2fs which can cause e2fsck and resize2fs to write uninitialized data into the portion of the inode beyond the first 128 bytes when operating on extents; potentially corrupting filesystems. * The logsave program will now filter out the ^A and ^B characters when writing to the console. * Update/clarify man pages (Closes: #531385, #523063) * Fix filefrag program so it correctly checks for errors from the fiemap ioctl. * Change badblocks to allow block sizes larger than 4k. * Fix libext2fs to properly initialize i_extra_size when creating the journal and resize inodes. * Resize2fs will now update the journal backup fields in the superblock if the journal is moved; this avoids an unnecessary full fsck after resizing the filesystem. * Use the same encoding as the kernel for rec_len == 64k in 64k block filesystems. * Fix lsattr to exit with a non-zero status when it encounters errors. * Enhance badblocks to print the currently tested block number when interrupted with ^C. * Fix debugfs from core dumping if the logdump command fails to open the output file. * Harden ext2fs_validate_entry() so that lsdel will not read beyond the end of the block even if the directory block is corrupted. * Update Chinese and Czech translation from the Translation Project. -- Theodore Y. Ts'o Mon, 29 Jun 2009 15:12:14 -0400 e2fsprogs (1.41.6-1) unstable; urgency=low * New upstream release * Update and clarify man pages * Fix a number of Lintian warnings, including to updating to debian policy 3.8.1 * Update config.guess and config.sub to the latest (2009-04-17) version so that e2fsprogs will build on the avr32 platform (Closes: #528330) * Add an explicit error message if the /etc/mtab file is missing when running e2fsck or resize2fs (Closes: #527859) * Enhance e2fsck to handle the case where the primary block group descriptors need fixing, and the backup superblock is corrupt. (Closes: #516820) * Add an "-a" option to debugfs's close_filesys command * e2fsck will no longer abort a preen operation if an inode's i_file_acl_hi field is non-zero. (Closes: #526524) * The chattr program can now migrate inodes from using direct/indirect blocks to extent trees. * Speed up e2fsck if there are multiple block groups with inodes in use in the unused portion of the block group's inode table. * Update Chinese translation from the translation project * Fix resize2fs so it won't corrupt ext4 filesystem when asked to shrink a filesystem smaller than the minimum suggested size. * Fix e2fsck regression which can corrupt ext4 filesystems when replaying the journal. * Add support to e2fsck for handling I/O errors while replaying the journal * Fix a bug in e2fsck which could cause it to crash if an inode has a corrupt extent header, and the user declines to clear the inode. * Fix blkid to prefer the /dev/mapper/ device names over the private /dev/dm-N device names. * Add support for the FIEMAP ioctl to the filefrag program * Further speed up e2fsck by skipping journal checks if the filesystem is mounted read-only and is marked as not needing journal replay. * Add a build depends in the control file indicating that dietlibc must be newer than version 0.30 (Closes: #506064) -- Theodore Y. Ts'o Fri, 30 May 2009 13:26:23 -0400 e2fsprogs (1.41.5-1) unstable; urgency=low * New upstream release * E2fsck will now detect and fix inodes that have a non-zero i_file_acl_high field on 32-bit filesystems. * Update build-depends to indicate that dietlibc 0.30 doesn't work. (Closes: #506064) -- Theodore Y. Ts'o Fri, 24 Apr 2009 08:52:47 -0400 e2fsprogs (1.41.4-3) unstable; urgency=low * Update/clarify man pages (Closes: #365619) * Fix a problem where the 'device names' for pseudo-filesystems in /proc/mounts could confuse the e2fsprogs into thinking that a filesystem image stored in a regular file was mounted when it was not * Remove whole-disk entries from the blkid cache when partitions are found * Reduce the number of disk reads needed when the filesystem is clean * Add Chinese (simplified) translation from the Translation Project -- Theodore Y. Ts'o Thu, 23 Apr 2009 01:35:22 -0400 e2fsprogs (1.41.4-2) unstable; urgency=low * Update the debian copyright files to point at the version-specific GPL and LGPL files. * Update the debhelper compat level to 7 * Fix a number of filesystem corruption bugs in resize2fs when growing or shrinking ext4 filesystems off-line (i.e., when the ext4 filesystem is not mounted). * Clarify tune2fs man page (Closes: #515693) * Add homepage field to the debian control file (Closes: #506279) * Fix Hurd compilation problem (Closes: #521602) * Debugfs can now set i_file_acl_high via the set_inodes_field command * Debugfs will now display a 64-bit file acl block * Fix various gcc compilation warnings and other programming cleanups * Make sure libuuid closes all file descriptors before starting the uuidd daemon. * Avoid running e2fsck unnecessarily after doing an online resize * Mke2fs -S will now avoid trying to create the journal * Update the Czech translation from the translation project. * Fix support for external journals (which was broken in e2fsprogs 1.41.4) * Fix a compatibility issue with libext2fs info page and makeinfo 4.12 * Fix a segfault in debugfs when running stat without an open filesystem * Teach the blkid library that starting in 2.6.29, ext4 can support filesystems without journals. * Add error check preventing the reserved_ratio argument to mke2fs and tune2fs from being negative. (Closes: #517015) * Add support for tracking the number kilobytes written to the filesystem via the superblock field s_kbytes_written -- Theodore Y. Ts'o Sun, 19 Apr 2009 23:05:53 -0400 e2fsprogs (1.41.4-1) unstable; urgency=low * New upstream release * Fix bug which could sometimes cause blkid to return an exit value of zero for a non-existent device (Closes: #502541) * Fix spelling mistake in Debian changelog (Closes: #502323) * Fix blkid to deal with an ext3 filesystem with the test_fs flag * Fix debugfs's ncheck output to suppress extra characters at the end of the file name * Tune2fs now updates the block group checksums after changing the filesystem's UUID * Speed up tune2fs's inode resizing code so it is no longer vastly inefficient for moderate to large filesystems * Fix dumpe2fs so it doesn't attempt to print the inline journal information on filesystems with an external journal * Update the Catalan translation * Filter out linux-vdso.so lines when determining the library dependencies while building the initial ramdisk (Closes: #503057) * Fix e2fsck so an errant INODE_UNINIT flag set in a block group doesn't cause e2fsck to abort. * E2fsck now distinguishes between fragmented directories and fragmented files in verbose mode statistics and in the fragcheck report. * Avoid double-counting non-contiguous extent-based inodes in the verbose mode statistics. * E2fsck now leaves slack space when repacking directories so that a few new directory entries won't cause leaf nodes to become split right away. * E2fsck was previously not handling the case of a corrupted interior node in the extent tree, and would crash in that case. It now will handle this and related failures robustly. * E2fsck problem descriptions involving the journal are no longer referred to as "ext3" problems, since ext4 filesystems also have journals. * Fix a long-standing bug in e2fsck which would cause it to crash when replying journals for filesystems with block sizes greater than 8k. * Fix a regression in debugfs's logdump command so it works for filesystems with 32-bit block numbers. This was accidentally broken when the header files were changed to support the 64-bit block numbers. * Fix resize2fs for ext4 filesystems. Some blocks that that need moving when shrinking filesystems with uninit_bg feature would not be moved. In addition, blocks and inode table blocks were not being correctly freed when shrinking filesystems with the flex_bg feable, which caused resize2fs -M to fail. Finally, when blocks are moved, make sure the uninitialized flag in extents is preserved. * Add mkfs.ext4 symlink to the e2fsprogs-udeb package (Closes: #511207) * Resize2fs now reserves some extra block when calculating the minimum size to shrink the filesystem in case some extent allocation trees * Add a "set -e" to uuid-runtime's prerm script to make Lintian happy * The blkid library will now recognize btrfs filesystems and swap devices currently used by user-level software suspend. * tune2fs will not allow changing the inode size for filesystems that have the flex_bg feature enabled, since the code currently assumes the each block group's portion inode table is located in its own block group. * Fix tune2fs -I so it won't corrupt ext3/ext4 filesystem configured for RAID storage devices. * Mke2fs now understands a -U option which allows the UUID to be specified for the new filesystem. * Mke2fs will now treat devices with exactly 16TB as if they have 16TB minus one block, since many users expect ext4 to support 16TB devices, and the true maximum size is 16TB-1. * E2fsck will now flag filesystems that have an insane s_first_ino field in their superblock. -- Theodore Y. Ts'o Tue, 27 Jan 2009 11:50:49 -0500 e2fsprogs (1.41.3-1) unstable; urgency=low * New upstream release * Fix e2fsck so it prints the correct inode number for uinit_bg related problems. * E2fsck will offer to clear the test_fs flag if the ext4 filesystem is available. * Fix a file descriptor leak in libblkid * Avoid a potential infinite loop in e2fsck when there are disk I/O errors while trying to close a filesystem. * Fix a potential infinite loop in resize2fs when a bogus new size of 0 blocks is specified on the command line. * Add an early check to see if a device is read-only to avoid lots of confusing error messages. * Fix debugfs's ncheck command so it prints all of the names of hardlinks in the same directories. * Fix a bug in libblkid so it correctly detects whether the ext4 and ext4dev filesystems are available, so that the ext4dev->ext4 fallback code works correctly. -- Theodore Y. Ts'o Sun, 12 Oct 2008 22:45:34 -0400 e2fsprogs (1.41.2-1) unstable; urgency=low * New upstream release * Fix e2fsck's automatic blocksize detection. This fixes a regression added in e2fsprogs 1.40.7 where e2fsck's -b option would not work if a blocksize wasn't also specified via the -B option. * Fix a potential file descriptor leak in libcom_err if the application exec's another program. * Fixed badblocks output for "badblocks -sw" * debugfs: Fix ncheck to print all pathnames for all of the specified inodes * Use dietlibc when possible for building e2fsck.static, to reduce the size of the static binary. * debugfs: Add the ability to specify the hash seed and to specify the hash algorithm by name to the "hash" command. * Add documentation for the file I/O functions to libext2fs.texinfo. (Closes: #484877) * Fix a bug in e2fsck where if a translation file is being used and e2fsck needs to print problem report with a custom question (such as "Run journal anyway?"), the PO file's header would get spewed onto the terminal. * Update Swedish, Vietnamese, Dutch, Indonesian, German, Czech translations * Fixed spelling mistakes in man pages (Closes: #498100, #498101, #498102, #498103) -- Theodore Y. Ts'o Thu, 02 Oct 2008 08:54:16 -0400 e2fsprogs (1.41.1-3) unstable; urgency=low * badblocks -v will now display the time and percentage complete (Closes: #429739) * Reordered debian/rules when building udebs to avoid a Lintian warning * Fixed dependencies fields in the udeb packages (Closes: #497619) * Avoid linking various programs with unneeded libraries * Fixed a typo'ed bold font specifier in mke2fs's man page * Fixed the pkg-config files so the include directory needed by the various libraries is included, and to use Requires.private to avoid unnecessary linking of dynamic libraries. * Add more historical information to the debian/*.symbol files -- Theodore Y. Ts'o Fri, 05 Sep 2008 11:11:03 -0400 e2fsprogs (1.41.1-2) unstable; urgency=low * Make sure ext4_swab64() is defined on all platforms (Closes: #497515) * Badlocks: Use O_LARGEFILE so it will run on files greater than 2GB -- Theodore Y. Ts'o Tue, 02 Sep 2008 09:53:46 -0400 e2fsprogs (1.41.1-1) unstable; urgency=low * New upstream release * mke2fs and tune2fs now use half-md4 as the default hash algorithm In addition the default hash algorithm can be via mke2fs.conf for mke2fs, and via a command-line option for tune2fs. * Add support for on-line resizing of ext4 filesystems with the flex_bg filesystem feature. * e2fsck now creates the journal in the middle of the filesystem, which can speed up fsync-heavy workloads. * Make the blkid library more efficient for devicemapper devices, mostly by no longer using the libdevmapper library. * Fix various namespace leakages by the libblkid, libe2p and libext2fs libraries. * Fix support for empty directories in 64k blocksize filesystems. * Add supported_features command to debugfs * Improve libblkid detection of JFS and HPFS filesystems * The test I/O manager is now compiled in by default, but to avoid its overhead, it is only enabled when the TEST_IO_FLAGS or TEST_IO_BLOCK environment variables are set. * Fix filefrag's ideal extent calculation (Closes: #458306) * Fix postinstall scripts when the user/group is in LDAP (Closes: #497010) * Add Indonesian and update French, Polish, Dutch, German, Swedish, Czech, and Vietnamese Translations. (Closes: #313697, #401092) * Update/clarified man pages * Add dpkg-gensymbols support to track ABI changes to the libraries * Add lintian overrides for uuid-runtime and libuuid1 * Remove (no longer needed) lintian overrides for e2fsck-static * Add debian/watch file -- Theodore Y. Ts'o Mon, 01 Sep 2008 11:30:21 -0400 e2fsprogs (1.41.0-4) unstable; urgency=low * mke2fs will issue a warning if mke2fs.conf hasn't been updated and the user tries to create an ext3, ext4, or ext4dev filesystem, since it depends on the mke2fs.conf file in order to create the filesystem properly with the appropriate features. * Fix the maximum journal size message in mke2fs and tune2fs to be consistent/correct. (Closes: #491620) * Add detection for hfsx filesystem and add label and uuid detection for hfs, hfsplus, and hfsx filesystems in libblkid. * Fix cosmetic issue in resize2fs when a progress bar doesn't finish with a newline for pass 4 (when the inode references are updated). * Teach resize2fs to move blocks when extents are present (when shrinking a filesystem and/or if resize_inode is not present). * Teach resize2fs to work correctly with the uninit_bg when blocks need to be moved or allocated. * Fix and optimize extent manipulation in libext2fs for resize2fs. * Fix "dumpe2fs -i" and "debugfs -i". (Closes: #495830) * Fix resize2fs incorrectly managing directory in-use counts when shrinking filesystems and directory inodes need to be moved. * Fix spurious e2fsck complaints with i_size with extents and large files and preallocated blocks. * Make sure the creation timestamp is set by mke2fs and by new inodes created by the libext2fs in general. * Fix ind/dind/tind statistics when extents are present, and add extent tree depth statistics. * Add a fragmentation report extended option to e2fsck. * Fix blkid cache validation and some possible blkid crashes (Closes: #493216) * Teach debugfs's htree command to work with extent-based directories. * Improve the error message for "tune2fs -I". * Fix miscellaneous strings and usage messages pointed out by the translators. (Thanks, translators!) * Enforce that mke2fs won't allow features for revision 0 filesystems. * Optimize inode table allocation in mke2fs for flex_bg filesystems. * Update/clarified man pages * Fix minor typo in uuid-runtime's debian package description * Wrap debian/copyright files to avoid "line too long" lintian warnings -- Theodore Y. Ts'o Sat, 23 Aug 2008 08:56:47 -0400 e2fsprogs (1.41.0-3) unstable; urgency=medium * Fix mips-specific FTBFS problem in debian/rules file * Synchronize section and priority levels in control file with the FTP masters' override file. -- Theodore Y. Ts'o Tue, 15 Jul 2008 11:38:59 -0400 e2fsprogs (1.41.0-2) unstable; urgency=medium * Don't try to check the group descriptor checksum if the GDT_CSUM feature is not present. (Closes: #490637) * Add a new blkid -L option which pretty-prints the currently available block devices. (Closes: #490527) -- Theodore Y. Ts'o Sun, 13 Jul 2008 19:18:08 -0400 e2fsprogs (1.41.0-1) unstable; urgency=medium * New upstream version * Make e2fsck detect corrupted block group descriptors that would cause it to relocate inode tables, causing more damage to the filesystem, and make it try the backup superblock/block group descriptors first. * Fix resize2fs to clean up the resize_inode if all of the reserved gdt blocks are consumed during an off-line resize. * Enable huge_file, dir_nlink, extra_isize features for mke2fs and tune2fs. * Enable huge_file, dir_nlink, extra_isize, and uninit_bg by default in mke2fs.conf. * Fix badblocks terminology in man page and program output. (Closes: #440983, #440981) * Clarify stripe-width and stride-size in mke2fs man page. (Closes: #487849) * mke2fs: Dumb down filesystems for GNU Hurd (Closes: #471977) * Add bash-static to the list of shells recommended for e2fsck-static (Closes: #490003) * mke2fs: Fix flex_bg metadata default layout to avoid a hole between the bitmaps and inode tables. -- Theodore Y. Ts'o Thu, 10 Jul 2008 17:25:32 -0400 e2fsprogs (1.41~WIP-2008-07-07-1) experimental; urgency=low * New upstream version (pre-release for e2sprogs 1.41) * Update to indicate compliance with debian policy version 3.8.0.0. * Fix e2fsck to not truncate valid extent files that are larger than what is supported by indirect files. * Add -dbg packages which contain the debugging information. * mke2fs: Print a better error message when a device is too big. (Closes: #488663) * Create external journal devices with a default blocksize of 4k * Fix bug in badblocks which caused crash when lots of -t patterns are given. (Closes: #487298) * Fix blkid handling of stale entries. (Closes: #487758, #487783) * Update Vietnamese, Polish, French, Spanish, German, Catalan, Dutch, Czech translations from the translation project. * Fix FTBFS problem on MIPS (Closes: #487675) * Fix bug in libuuid1.postinst which would cause it to blow up if there were spaces around the equals sign in /etc/adduser.conf. (Closes: #487443) * Update/clarified man pages. (Closes: #393313) -- Theodore Y. Ts'o Mon, 07 Jul 2008 16:30:43 -0400 e2fsprogs (1.41~WIP-2008-06-17-1) experimental; urgency=low * New upstream version (pre-release for e2fsprogs 1.41) * New options to badblocks allow it to limit how quickly it reads from disk (for background scrubbing) and abort after a finding giving a number of errors. * Add support for ext4 filesystem features. (Closes: #388452, #425477) * Tune2fs can migrate a filesystem from using 128 byte inodes to larger inode sizes so the user can take full advantage of ext4) * E2fsck and mke2fs can optionally record an undo log which can be replayed by the e2undo program. * E2fsck will display a less cryptic message when the last check field in the superblock is in the future. (Closes: #446005) * Improve blkid probes for LVM volumes and swap partitions * Mke2fs has a much more sophisticated system for controlling the parameters of newly created filesystems. The -t option now is used to specify the filesystem type. See the mke2fs and mke2fs.conf man pages for more details. * Resize2fs will now print the minimum needed filesystem size if given the -P option, and will resize the filesystem to the smallest possible size if given the -M option. * E2fsck now performs more extensive and careful checks of extended attributes stored in the inode. * Mke2fs will always make sure that lost+found always has at least 2 blocks, even for filesystems with very large blocksizes (i.e., 64kb). * The debugfs "ls" command now supports the -p option, which causes filenames to be printed surrounded by double quotes. * Fix a potential off-by-one buffer overflow in e2image * The chattr program will now return a non-zero exit code in case of failures. * This version of e2fsprogs removes support for legacy big-endian filesystems and for MASIX filesystems. * Add I/O statistics reporting to e2fsck. -- Theodore Y. Ts'o Tue, 17 Jun 2008 23:57:08 -0400 e2fsprogs (1.40.11-1) unstable; urgency=low * Change mke2fs, tune2fs and resize2fs to use floating point precision when calculating the number of reserved blocks. (Closes: #452639) * Update Spanish and Catalan translations. * Fix ext2fs_swap{16,32,64} for external applications. (Closes: #484879) * Improve uuid-runtime package description. (Closes: #483962) * Improve e2fsprogs package description. (Closes: #483023) * Add support for detecting ZFS volumes to libblkid. * Clarify debugfs man page. (Closes: #486463) -- Theodore Y. Ts'o Tue, 17 Jun 2008 21:59:21 -0400 e2fsprogs (1.40.10-1) unstable; urgency=low * Fix a very rare potential data corruption bug in e2fsck's journal replay. * Updated German, Dutch, Swedish, and Vietnamese translations. * Force blkid to revalidate a device if its mtime is newer than the last validation time in the cache. -- Theodore Y. Ts'o Wed, 21 May 2008 13:35:12 -0400 e2fsprogs (1.40.9-1) unstable; urgency=low * Fix fsck so that if multiple filesystems are being checked in parallel, the progress bar for subsequent filesystems will be correctly displayed. (Closes: #432865) * Fix fsck -Cn for n!=0 for better Ubuntu boot-time support * debugfs: Don't bother using a pager of stdout is not a tty * Fix tune2fs and debugfs to correctly parse time strings during daylight savings time. (Closes: #471882) * Teach fsck to treat ext4 and ext4 filesystems as ext* filesystems * Logsave will now propagate SIGINT and SIGTERM signals to its child process. * Mke2fs will not allow the illogical combination of the resize_inode and meta_bg filesystem features. * Use UID/GID ranges from adduser.conf if present, even though we don't use adduser to add users/groups. (Closes: #473179) * Updated German, Czech, Dutch, French, Polish, Swedish, and Vietnamese translations. * Update/clarified the mke2fs man page -- Theodore Y. Ts'o Sun, 27 Apr 2008 00:35:20 -0400 e2fsprogs (1.40.8-2) unstable; urgency=low * One more big-endian swap fix needed for resize2fs to work correctly with in-inode extended attributes. * Fix minor security issues identified in uuidd. * Remove e2fsprogs preinstall script which contained stuff not needed in well over two stable releases. -- Theodore Y. Ts'o Fri, 14 Mar 2008 14:25:54 -0400 e2fsprogs (1.40.8-1) unstable; urgency=low * Fix e2image -I so it works on image files which are larger than 2GB. * Fix e2fsck's handling of directory inodes with a corrupt size field. * Fully fix a resize2fs bug where extended attributes in large inodes could get dropped on big-endian systems. * Update Czech, Dutch, Polish, Swedish, and Vietnamese translations. * Significantly updated German translation! Thanks to Philipp Thomas from Novell for stepping up to be our new German translation maintainer! (Closes: #302512, #370247, #401092, #412882) * Fixed mke2fs man page to document new default inode size. -- Theodore Y. Ts'o Thu, 13 Mar 2008 20:00:09 -0400 e2fsprogs (1.40.7-1) unstable; urgency=low * New upstream release * tune2fs no longer will remove the sparse_super feature, as it is dangerous * Update/clarified various man pages * Fix bug where large nodes were not getting fully copied when shrinking a filesystem using resize2fs. * Allow mke2fs and tune2fs to manipulate the large_file feature flag * Suppress fsck's warning message about an old-style fstab if the fstab file is empty. (Closes: #468176) * E2fsck will no longer clear the large_files feature flag automatically when there are no more large files in the system. * Fix blkid code to avoid segfaulting when a device mapper volume disappears out from under it. * Enhance e2fsck's reporting of unsupported filesystem features * Fix dumpe2fs command syntax for explicit superblock/blocksize parameters * Teach tune2fs to clear the resize_inode feature flag * Fix libuuid1 postinstall script to explicitly pass 100 to UID_MIN and GID_MIN, to make it clear we are not trying to allocate an uid/gid in the globally reserved range. (Closes: #466929) * Fix memory leak in ext2fs_alloc_block() * Teach blkid to recognize LVM2 physical volumes * Add support to dumpe2fs, mke2fs, and tune2fs for specifying and printing the RAID stride and stripe width. * Add support for new superblock fields to debugfs's set_super_value command * Teach debugfs to print "mostly-printable" xattr strings, such as is used by SELinux. * Add support in fsck to ignore mounted filesystems when given the -M option * Fix uuidd so it creates the pid file with the correct pid number * Update Czech, Dutch, Polish, Swedish, and Vietnamese translations from the Translation Project. -- Theodore Y. Ts'o Thu, 28 Feb 2008 22:27:39 -0500 e2fsprogs (1.40.6-1) unstable; urgency=low * New upstream release * Add support for returning labels for UDF filesystems in the blkid library. * Fix bug in the blkid library where cached filesystems was not being flushed when opening USB devices returned the error ENOMEDIUM. (Closes: #463787) * Add logic to the blkid library to automatically choose whether a filesystem should be mounted as ext4 or ext4dev, as appropriate. * Allow tune2fs to set and clear the test_fs flag on ext4 filesystems. * Document the BLKID_FILE environment variable in the libblkid man page * Update Vietnamese and Czech translations from the translation project * Fix dependency problem caused by dpkg 1.14.16 (Closes: #436058) * Use thread local storage to fix a theoretical race condition if two threads try to format an unknown error code at the same time in the com_err library. -- Theodore Y. Ts'o Sun, 10 Feb 2008 00:06:02 -0500 e2fsprogs (1.40.5-2) unstable; urgency=low * Fix debian/control and debian/rules so that they work correctly after a change in dpkg-gencontrol's behavior after version 1.14.16 of dpkg. This fixes bad version dependencies for comerr-dev, uuid-dev and ss-dev. Thanks to Don Armstrong for the explanation and Margarity Manterola for a proposed patch. (Closes: #463058) -- Theodore Y. Ts'o Wed, 30 Jan 2008 07:17:27 -0500 e2fsprogs (1.40.5-1) unstable; urgency=low * New upstream release. * Mke2fs will now create new filesystems with 256 byte inodes and the ext_attr feature flag by default. This allows for much better future compatibility with ext4 and speeds up extended attributes even on ext3 filesystems. * Teach mke2fs and tune2fs to set a "test_fs" flag, which indicates that it is ok to use the filesystem on in-development kernel code (i.e., ext4dev) * E2fsck now optimizes non-htree directories by sorting them by inode number. * Add support for detecting HFS+ and ext4/ext4dev filesystems in blkid * Fix blkid's ntfs UUID handling so it is compatible with vol_id * Avoid a floating point exception when blkid tries to probe a corrupt reiserfs filesystem. * Fix potential overflow problem in e2image if the device name is too long. * Cause e2image to exit immediately with an error message on a disk full situation. * Fix a minor typos in the resize2fs and uuidd manpages. * E2fsck will no longer backup superblocks when the kernel makes certain "safe" feature set changes behind the user's back. * Fix debugfs's lsdel command so it works on large files * Allow a user to undelete an inode with linking to a destination directory. * Update Swedish translation file from the Translation Project * The libuuid1 and uuid-runtime packages requires passwd package, so declare it as a dependency. (Closes: #459403) * Fix a FTBFS problem on x86_64 caused by the fact that dietlibc doesn't provide llseek on the x86_64. (Closes: #459614) * Don't use dietlibc on platforms that don't support it (Closes: #459475) -- Theodore Y. Ts'o Sun, 27 Jan 2008 16:57:34 -0500 e2fsprogs (1.40.4-1) unstable; urgency=low * Make sure that programs like tune2fs, when modifying a mounted filesystem do not write the backup superblocks with the NEEDS_RECOVERY flag, to avoid e2fsck from needlessly forcing a full fsck because it thinks the feature flags need to be backed up from the master to the backup superblocks. (Closes: #454926) * Improve time-based UUID generation to guarantee uniqueness even when UUID's are being generated at very high rates on SMP systems. To do this we use an optional setuid helper daemon (uuidd) which is started by libuuid when it is needed. The uuidd daemon is packaged in the (new) uuid-runtime package, which now also includes the uuidgen program (which had been previously been included as part of the e2fsprogs package). * Fix fsck to only treat '#' characters at the beginning of /etc/fstab lines as starting a comment. This avoids spurious warnings printed for filesystems such as fuse that often use '#' as part of the filesystem specifier (i.e., wdfs#https://dav.hoster.com/foo). * Enhance the blkid program to pretty-print control and meta characters to avoid garbage filesystem labels from screwing up the user's terminal * Fix potential integer overflows passed to malloc() in resize2fs * Update Dutch, Polish, and Vietnamese translations from the Translation Project. Remove the Rwandan translation upon advice of the Translation Project. * Fix cross-compilation support for non-Linux architectures (Closes: #451172, #437720) * Clarified and improved man pages (Closes: #444883, #441872) * Fix potential divide by zero error when libblkid tried probing an invalid FAT filesystem. * Make error_message() in libcom_err DTRT when when a 64-bit sign-extended error code is passed to it. * Build the e2fsck-static package so that e2fsck.static will not use TLS and hence will run correctly on back-level Debian systems using a 2.4 Linux kernel. (Closes: #458017) -- Theodore Y. Ts'o Mon, 31 Dec 2007 22:40:42 -0500 e2fsprogs (1.40.3-1) unstable; urgency=medium * New upstream release * libext2fs: Add checks to prevent integer overflows passed to malloc(). Fixes security issue related to Xen's pygrub: CVE-2007-5497 * libss: Fix parallel build failure * e2fsprogs: fix blkid whole-disk scanning heuristics * libext2fs: Fix a corner case bug in ext2fs_unlink * fix check_mntent_file() to pass mode for open(O_CREAT) * Fix errors in test_ss.c so it can be an example application and test case * e2image in raw-mode appends an extra byte to image-file * Fix typo in the summary section of the blkid man page * mke2fs: Change usage message to use -E instead -R, which is deprecated * libblkid: recognize squashfs filesystems on BE systems. * libblkid: detect squashfs * e2fsck: backup superblocks if key constants have changed * e2fsck: update the backup superblocks if the feature bitmasks are changed * ext2fs_dblist_dir_iterate: Fix ABORT propagation logic * libblkid: Add more magic numbers that might mean there is a FAT filesystem * e2fsck: Don't mark the filesystem invalid because of time errors * Work around lame Ubuntu init scripts / installer bugs * fsck: Ignore /etc/fstab entries for bind mounts * e2fsck: If the superblock is corrupt, automatically retry with the backup sb * Don't crash if s_inode_size is zero * Use sscanf instead of atoi when parsing e2fsck options * Add Catalan translation and update Spanish, French, and Dutch translations from the Translation Project. (Closes: #411562) * Fix typo and clarify the uuidgen man page * Make sure $prefix/etc is created before installing mke2fs.conf * e2fsck: Allow i_size to be rounded up to the size of a VM page * Fix a bug in ext2fs_initialize() which causes mke2fs to fail while allocating inode tables for some relatively rare odd disk sizes. * Fix big-endian byte-swapping bug in ext2fs_swap_inode_full() -- Theodore Y. Ts'o Wed, 05 Dec 2007 20:04:28 -0500 e2fsprogs (1.40.2-1) unstable; urgency=low * New upstream release * e2fsck: Fix salvage_directory when the last entry's rec_len is too big * Update Turkish, Polish, Dutch, and Vietnamese PO files from the Translation Project * Fix a bug which would cause e2fsck segfault on very badly damaged filesystems * Update tune2fs man page to include more discussion of reserved blocks (Addresses Ubuntu Launchpad bug #47817) -- Theodore Y. Ts'o Thu, 12 Jul 2007 22:18:51 -0400 e2fsprogs (1.40.1-1) unstable; urgency=low * New upstream release * Clarify mk_cmds' error reporting * e2fsck: Detect recursive loops in @-expansions * Compile the default mke2fs.conf into mke2fs program * Fix bogus strip permission errors when building under Debian * Update Vietnamese, French, and Dutch PO files from the Translation Project * Fix bug which could cause libblkid to loop forever (Closes: #432052) -- Theodore Y. Ts'o Sun, 8 Jul 2007 20:25:08 -0400 e2fsprogs (1.40-1) unstable; urgency=low * New upstream release * Remove RFC-4122 logic from Debian build rules (Closes: #407107) * Fix com_err.texinfo so that the install-info command will remove the com_err info file from the /usr/share/info/dir file when the comerr-dev package is removed and purged (Closes: #401711) * Fix divide-by-zero error in blkid's NTFS proving logic * Add new blkid -g option which causes the blkid cache to be garbage collected * libblkid: Fix bug which could cause bid_type to be corrupted * mke2fs: Add sanity check to make sure inode_size * num_inodes isn't too big * Fix additional Coverity bugs in mke2fs and e2fsck * Improve sanity check in e2fsck's algorithm for finding a backup superblock * Fix e2fsck get_size logic so that it will work with the Linux floppy driver (Closes: #410569) * Fix error checking of badblock's last-block and start-block arguments (Closes: #416477) * e2fsck: avoid writing overwriting the backup superblocks until the master superblock is confirmed to be sane * Make the blkid library more paranoid about concluding a partition contains a NTFS filesystem. (Addresses Launchpad Bug: #110138) * Enhance e2fsck so it will recreate the ext3 journal if the original journal inode was cleared to due being corrupt * Fix e2fsck so that if the backup journal information is used, that this is written out to the journal inode * Make e2fsck check all of the blocks in the journal inode for validity * blkid: Add support for detecting LUKS encrypted partitions * e2fsck: added sanity check for xattr validation * Fix byte-swapping bug for filesystems with large inodes * Clarify the copyright licenses used by the various libraries in COPYING * Remove RFC-4122 from upstream (Closes: #407107) * Fix info-dir line which prevented install-info from removing com_err entry from from /usr/share/info/dir when the comerr-dev package is purged (Closes: #401711) -- Theodore Y. Ts'o Sun, 29 Jun 2007 22:40:27 -0400 e2fsprogs (1.39+1.40-WIP-2007.04.07+dfsg-2) unstable; urgency=low * Allow the journal to up to 10,240,000 blocks * Fix blkid library to recognize MD 0.90 superblock on little endian systems * Fix blkid library to report the correct UUID from MD superblocks * Fix signed vs. unsigned problem in debugfs' setb/testb/freeb commands * Enhance debugfs's date parser so it accepts integer values * Fix e2fsck's pass1c accounting so it doesn't terminate too early if a file with multiply claimed blocks is hard linked. or not at all if the root directory contains shared blocks * Enhance debugfs so it can modify the block group descriptors using the command set_block_group_descriptor * Improve e2fsck's reporting of I/O errors so it's clearer what it was trying to do when an error happens * Fix a bug in how e2fsprogs byte swaps inodes containing fast symlinks that have extended attributes. * Fix potential file descriptor leak in ext2fs_get_device_size() * Fix minor typo in e2fsck.conf.5 man page * Cleanup udeb dependency (Closes: #419605) * Rebuilding with libdevmapper 1.02.1 (Closes: #421022 and #421668) * Add dependency on comerr-dev to ss-dev (Closes: #408352) * Make mke2fs use sane defaults when /etc/mke2fs.conf doesn't exist * Fix mke2fs and debugfs to support large (> 16 bit) uid's and gid's * Fix spelling typo in debian package description for libblkid1 (Closes: #399155) * Remove -WIP language from the debian copyright file. (Closes: #415560) * Remove check in e2fsck which required EA's in inodes to be sorted (We should get this back-ported to the stable branch since filesystems with large inodes will have EA's erroneously removed, which will for example toast an SELinux system.) -- Theodore Y. Ts'o Sun, 6 May 2007 19:44:35 -0400 e2fsprogs (1.39+1.40-WIP-2007.04.07+dfsg-1) unstable; urgency=low * Add libreadline.so.5 support to libss. * Improve badblocks -n/-w exclusive usage message. * Add debugging code (via the COMERR_DEBUG env. variable) to the com_err library * Fix dump_unused segfault in debugfs when a filesystem is not open * Add versioned dependency in Debian's shlibs for libblkid. (Closes: #413208) * Fix memory leak in blkid library. (Closes: #413661) * Let the debugfs lcd command work even if a filesystem is not open * Fix large number of miscellaneous Coverity bugs. (None were security-security). * Fix e2fsck to clear i_size for special devices with a bogus i_blocks field on the first pass. * Fix e2fsck to set the file type of the '..' entry when connecting a directory to lost+found. * Enhance e2fsck to recover directories whose modes field were corrupted to look like special files. * Allow debugfs to dump > 2GB files. (Closes: #412614) * Misc. man page cleanups. (Closes: #379695) * Fix resize2fs parsing of size parameter (Closes: #408298) * Fix infinite loop in e2fsck on really big filesystems (Closes: #411838) * Fix memory leak in ext2fs_write_new_inode() * Add support for using a scratch files directory to reduce e2fsck's memory utilization on really big filesystems. -- Theodore Y. Ts'o Sat, 7 Apr 2007 10:38:40 -0400 e2fsprogs (1.39+1.40-WIP-2006.11.14+dfsg-1) unstable; urgency=low * Fix spurious error from e2fsck -c and mke2fs -c caused by the fix to #386475. * Add dirhash signed/unsigned hint to superblock. (Closes: #389772) * Allow unix_io offsets greater than 2 gigabytes * Make sure mk_cmds and compile_et work even in strange locales * Fix type-punning bug which caused dumpe2fs to crash on the Arm platform (Closes: #397044) * Add explanatory message to badblocks that -n and -w are mutually exclusive. (Closes: #371869) * New +dfsg source tarball that has useful documentation REALLY removed to satisfy the DFSG License Nazi's. (Closes: #390664) -- Theodore Y. Ts'o Tue, 14 Nov 2006 23:45:34 -0500 e2fsprogs (1.39+1.40-WIP-2006.10.02+dfsg-2) unstable; urgency=low * Add failsafes against duplicate UUID generation caused by threads * Fix potential e2fsck -n crash caused by corrupt htrees * Reorder the library line for static linking, to fix undefined references to pthreads on amd64. (Closes: #393680) * Fix mke2fs's error checking when creating revision 0 filesystems. (Closes: #392107) -- Theodore Y. Ts'o Sun, 22 Oct 2006 00:19:44 -0400 e2fsprogs (1.39+1.40-WIP-2006.10.02+dfsg-1) unstable; urgency=low * New +dfsg source tarball that has useful documentation removed to satisfy the DFSG License Nazi's. (Closes: #390664) * Remove dependency on e2fsprogs from the e2fsck-static package (Closes: #383521) * Fix badblocks interpretation of its first optional argument (last-block) (Closes: #386475) -- Theodore Y. Ts'o Tue, 3 Oct 2006 23:36:05 -0400 e2fsprogs (1.39+1.40-WIP-2006.10.02-2) unstable; urgency=low * Build using the sid version of libc, not experimental! -- Theodore Y. Ts'o Mon, 2 Oct 2006 21:43:44 -0400 e2fsprogs (1.39+1.40-WIP-2006.10.02-1) unstable; urgency=low * Previous NMU acknowledged (Closes: #388718) * Fix debugfs to print unsigned values for EA's * Minor man page fixes (Closes: #373004, #369761) * Allow the default inode size to be specified in mke2fs.conf * Require mke2fs -F -F for really dangerous operations * Add Vietnamese translation * Update French and Dutch translations * Fix debugfs coredump when lsdel is run without an open filesystem (Closes: #378335) * Fix spelling error in e2fsck output * Fix overflow problems when the number of inodes and blocks is close to 2**32-1 * Add GFS/GFS2 support to the blkid library. * Fix blkid support of empty FAT filesystem labels * Avoid recursing forever due to symlinks in /dev by the blkid library * Fix bogus error messages from resize2fs caused by the filesystem not containing a resize inode. (Closes: #380548) * Fixed device-mapper probing (it was failing due to an extra '/dev' being added to the device pathname) * Make sure the default minimum size journal is big enough to support on-line resizing. * Add a versioned build-dep on texi2html (Closes: #389554) * Remove useful UUID specification thanks to License Nazi's (Closes: #390664) -- Theodore Y. Ts'o Mon, 2 Oct 2006 13:04:27 -0400 e2fsprogs (1.39-1.1) unstable; urgency=low * Non-maintainer upload * Added -pthreads to devmapper libraries (Closes: #388718) -- Ben Hutchings Sat, 30 Sep 2006 12:49:47 +0100 e2fsprogs (1.39-1) unstable; urgency=low * New upstream version * Fix debugfs's dump_unused command so it will not core dump on filesystems with a 64k blocksize * Clarified and improved man pages, including spelling errors (Closes: #368392, #368393, #368394, #368179) * New filesystems are now created with directory indexing and on-line resizing enabled by default * Fix previously mangled wording in an older Debian changelog entry * Fix doc-base pointer to the top-level html file (Closes: #362544, #362970) -- Theodore Y. Ts'o Mon, 29 May 2006 11:07:53 -0400 e2fsprogs (1.38+1.39-WIP-2006.04.09-2) unstable; urgency=low * Resize2fs automatically detects the previously used RAID stride parameter so that resized filesystems can be more optimally laid out for RAID filesystems. * Fix mke2fs -cc and e2fsck -cc (Closes: #366017) * Fix initrd script to fix failure with 2.4 kernels (Closes: #364516) * Mke2fs now uses an improved layout for RAID filesystems when the stride parameter is specified. * Fix the debugfs commands htree_dump, dx_hash, and list_dir so they print a usage message when an illegal option character is given. * Speed up mke2fs and e2fsck by writing inode and block bitmaps in one pass * Fix filefrag to be 32-bit clean by using unsigned long instead of a signed integer for block numbers. * Fix a bug in the e2p library which could cause dumpe2fs to (rarely) fail to print out the journal or hash seed UUID. * Fix memory leak in e2fsck's error paths. * Fix comerr-dev's doc-base pointer to the top-level html file -- Theodore Y. Ts'o Sun, 14 May 2006 18:09:20 -0400 e2fsprogs (1.38+1.39-WIP-2006.04.09-1) unstable; urgency=low * Update config.guess and config.sub to latest version (2006-02-23) from FSF * Update French, Dutch, Polish, Swedish, and Turkish translations * Fix asm/types.h type conflicts on AMD64 to fix FTBFS problems. (Closes: #360661, #360317) * Fix bug which caused mke2fs -j to fail with an EBUSY error. (Closes #360652) -- Theodore Y. Ts'o Sun, 9 Apr 2006 23:04:15 -0400 e2fsprogs (1.38+1.39-WIP-2006.03.29-2) unstable; urgency=low * Added missing build dependency on libdevmapper-dev. (Closes: #360046) -- Theodore Y. Ts'o Thu, 30 Mar 2006 12:33:30 -0500 e2fsprogs (1.38+1.39-WIP-2006.03.29-1) unstable; urgency=low * Add udeb: lines to the Debian's shlibs files (Closes: #356293) * Enhance dumpe2fs to print the size of the journal * Fix e2sprogs so that it is 32-bit clean on x86 platforms. * Fix mklost+ound so that it creates a full-sized directory on 4k and larger block sizes. * Add mke2fs.conf configuration file to configure mke2fs's defaults * Add devmapper support to the blkid library. * E2fsck, resize2fs and mke2fs will now open the filesystem device in exclusive mode * Fix documentation and man pages. (Closes: #351268, #357951, #347295, #316040) * Cix "mke2fs -O resize_inode" for very large filesystems (Closes: #346580) * Add on-line resizing support into resize2fs * Fix blkid's handling of verification timeouts when the system clock is insane * Fix library Makefiles so they work with GNU make 3.81 as well as GNU make 3.80. * Enhance the blkid library to display the uuid of external journals for ext3 filesystems * Enhance e2fsck so it will fix the external journal hint in the superblock if it is out of date. * Fix debugfs's icheck to correctly report the owner of an EA block * Update Swedish translation * Add a configuration parameter to e2fsck.conf to control whether or not filesystem checks are done when the system is running on battery power. * Print an explanation when skipping a check due being on battery (Closes: #350306) * Update French translation (Closes: #341911, #300871, #316604, #316782, #330789) -- Theodore Y. Ts'o Wed, 29 Mar 2006 20:37:27 -0500 e2fsprogs (1.38+1.39-WIP-2005.12.31-1) unstable; urgency=medium * New upstream version * Update profile library code base - Allow tag and section names to have quoted strings - Make the profile library support reading files in a conf.d directory - Slightly change the parser to support comments at the end of all lines - Add syntax error reporting - Simplify profile code - Add E2FSCK_CONFIG environment variable which overrides where to find /etc/e2fsck.conf - Make e2fsck's filesystem problem handing configurable - Fix FTBFS bug if comerr-dev is not installed. (Closes: #345519) * Update Dutch, Polish, and Swedish translations. (Closes: #343149) * Fix a fd leak across an exec in libuuid. (Closes: #345832) * Address override file disparities * Make urgency be medium to accelerate a workaround to Debian's buggy initscripts (See Debian bugs: #343662, #343645) -- Theodore Y. Ts'o Fri, 6 Jan 2006 21:41:06 -0500 e2fsprogs (1.38+1.39-WIP-2005.12.10-2) unstable; urgency=low * Make resize2fs expand or truncate a file containing a filesystem. (Closes: #271607) * Add support for lib64ext2fs-nopic.a for the mips architecture (Closes: #329074) * Deal with the fact that Debian's boot sequence bogusly doesn't set the time correctly until very late in the boot process; so if the superblock's last mount or write time is in the future, don't treat this as a fatal error. (Closes: #343662, #343645) * Move the blkid and uuidgen binaries out of libblkid1 and libuuid1 and into the e2fsprogs package to support soname transitions and simultaneous installs of multiarch flavors to coexist. (It's not worth creating two whole new packages for two separate binaries, so we just fold them into e2fsprogs.) (Closes: #330737, #330736) * Optionally allow the user to interrupt e2fsck "safely" during a boot sequence without causing the boot scripts to abort. (Closes: #150295) * Update and clarify man pages (Closes: #312515) -- Theodore Y. Ts'o Sat, 31 Dec 2005 01:05:35 -0500 e2fsprogs (1.38+1.39-WIP-2005.12.10-1) unstable; urgency=low * Update and clarify man pages (Closes: #329859, #322188, #316811) * Fix bug creating external journals on big-endian machines. * Detect if the superblock's last mount time or last write time is in the future, and offer to fix it if this is the case (Closes: #327580) * Add new debugfs command, set_current_time which sets the time used to update the filesystem's time fields. * Fix display bug in badblocks -sw when printing the "done" message. (Closes: #322231) * Improve blkid's FAT/VFAT filesystem detection code so that it can find labels stored the root directory and to be more correct/paranoid. * Add support to extract iso9660 label information to the blkid library. * Add support to detect the reiser4 filesystem to the blkid library. * Add support for detecting software suspend partitions to the blkid library. * Fix the blkid library to notice when an ext2 filesystem is upgraded to ext3. * Fix debugfs's set_inode_field so that successfully sets the i_size field * Updated Dutch translation * E2fsck will stop and print a warning if the user tries running a read/write badblocks test on a read-only mounted root filesystem. * Add resize2fs and badblocks to the e2fsprogs udeb (Closes: #290429, #310950) * Avoid trying to mount the root device if it is an NFS device. (Closes: #310428) -- Theodore Y. Ts'o Sat, 10 Dec 2005 22:49:47 -0500 e2fsprogs (1.38-2) unstable; urgency=low * Previous NMU acknowledged (Closes: #317862, #320389) * Fix debugfs's set_inode_fields command so it doesn't silently fail when setting certain inode fields. * Fix e2fsck from segfaulting on disconnected inodes that contain one or more extended attributes. (Closes: #316736, #318463) * Allow mke2fs and tune2fs to take fractional percentages to the -m option in mke2fs and tune2fs. (Closes: #80205) * Fix a compile_et bug which miscount the number of error messages if continuations are used in the .et file, and fix compatibility problems with MIT Kerberos 1.4 * Add extra sanity checks to protect users from unusual circumstances where /etc/mtab may not be sane, by checking to see if the device is reported busy (works on Linux 2.6) kernels. (Closes: #319002) * Fix use-after-free bug in e2fsck when finishing up the use of the e2fsck context structure. -- Theodore Y. Ts'o Sun, 21 Aug 2005 23:35:29 -0400 e2fsprogs (1.38-1.1) unstable; urgency=low * NMU for RC bug during bug squishing party * Fix for changes to texi2html, patch by Matt Kraai (Closes: #317862, #320389) * version build-depend on texi2html, won't work with older one anymore -- Blars Blarson Fri, 5 Aug 2005 04:46:54 +0000 e2fsprogs (1.38-1) unstable; urgency=low * New upstream version * Fix ia64 core dump bug caused by e2fsprogs running afoul of C99 strict type aliasing rules on newer gcc compilers. (Addresses Red Hat Bugzilla ##161183.) * Fix minor typo's in tune2fs man page. * Mke2fs will refuse to create filesystems greater than 2**31-1 blocks, unless forced, to avoid kernel bugs that still need to be fixed as of this release. * Update French, Dutch, Polish, Swedish, and Turkish translations. -- Theodore Y. Ts'o Wed, 30 Jun 2005 20:02:42 -0400 e2fsprogs (1.37+1.38-WIP-0620-1) unstable; urgency=low * Update and clarify man pages. * Clarify and clean up e2fsck's problem descriptions * Add Dutch translation, and update French, Polish, Swedish, and Turkish translation. * mke2fs and badblocks will check to see if the device appears to be busy and abort if so; this feature only works on Linux 2.6 systems. (Closes: #308594) * Fix filefrag so that it works on 64-bit platforms where the size of an integer != the size of a long. (Closes: #309655) * Change the default journal size to be bigger for larger filesystems, given modern memory sizes. * Fix com_err library so it is compatible with MIT krb5 1.4. -- Theodore Y. Ts'o Mon, 20 Jun 2005 17:11:29 -0400 e2fsprogs (1.37+1.38-WIP-0509-1) unstable; urgency=low * Make the blkid library much more efficient when a new device is added on systems with a huge number of disks. * Fix handling of the PAGER and SS_READLINE_PATH environment variables in the ss library, and the TEST_IO_* environment variables for the test_io io_manager, which was accidentally broken in 1.37-1. * Fix libblkid's recognition of cramfs filesystems, and add support for cramfs labels. * Fix filefrag to give correct results when the first block found is an indirect block. (Closes: #307607) * Fix debugfs seg fault when the stat command is given and a filesystem is not open. * Improve environment variable paranoia checks. * Fix e2fsck's handling of multiply claimed blocks involving the resize inode. * When determining the libraries needed for the initrd, unset LD_PRELOAD and LD_LIBRARY_PATH and filter out libraries found in /etc/ld.so.preload. (Closes: #304003) * Update Swedish translation, and added translation for Rwanda. * Minor man page spelling/typo fixes. (Closes: #304591, #304592, #304594, #304597, #304593) -- Theodore Y. Ts'o Mon, 9 May 2005 09:10:20 -0400 e2fsprogs (1.37-2) unstable; urgency=low * Fix filefrag so that it works non ext2/3 filesystems again. (Closes: #303509) * Make sure we include stdlib.h to fix a core dump bug in mke2fs on the IA64 architecture (or other platforms where sizeof(ptr) > sizeof(int)) (Closes: #302200) * Add missing return values so that we don't return garbage in certain error cases in ext2fs_write_new_inode() and ext2fs_read_int_block(). * Fix minor spelling typo in the mke2fs man page * Avoid doing the LOW_DTIME checks if the superblock last mount time indicates that the system clock may not be set correctly. * Add further paranoia checks to the blkid, ext2fs, and ss libraries to make them safe to call from setuid or setgid applications. -- Theodore Y. Ts'o Sat, 9 Apr 2005 11:08:04 -0400 e2fsprogs (1.37-1) unstable; urgency=low * New upstream release. * Fixed a bug in e2fsck so it would notice if a file with an extended attribute block was exactly 2**32 blocks, such that i_blocks wrapped to zero. * Fixed a bug in filefrag which caused it to falsely report a discontinuity when there are one or more unallocated blocks at the beginning of a file. * Fix the missing translations (caused by a bug in the gen-tarball script). (Closes: #296769) * Add support in e2fsck and debugfs for extended attributes in inodes. * Fix the missing translations (caused by a bug in the gen-tarball script). (Closes: #296769) * Force compile_et and mk_cmds to use /usr/bin/awk so that we will work on any Debian system regardless of which version of awk is installed. (Closes: #299341) -- Theodore Y. Ts'o Thu, 21 Mar 2005 22:31:08 -0500 e2fsprogs (1.36release-1) unstable; urgency=low * New upstream release. * Make filefrag print the first and last blocks when in verbose mode. * Drop sparc assembly bitops; it's less efficient than gcc 3.4's generated code, and it triggers compiler warnings on sparc 64. (Closes: #232326) -- Theodore Y. Ts'o Fri, 4 Feb 2005 20:58:35 -0500 e2fsprogs (1.36rc5-1) unstable; urgency=low * Make blkid -t work more consistently even when the cache file is not available or set to /dev/null. (Closes: #292425) * Don't ever use a blocksize greater than 4k, since not all 2.6 kernels will support this. * Fix bug where mke2fs would not correctly create filesystems greater than 4TB. * Fix e2fsck so it won't delete symlinks that contain an extended attribute after the ext_attr feature flag has been cleared. * Fix e2fsck's resize inode handling in some additional corner cases. -- Theodore Y. Ts'o Thu, 27 Jan 2005 22:44:31 -0500 e2fsprogs (1.36rc4-1) unstable; urgency=low * Fix a bug in resize2fs where we don't release the blocks belonging to the old inode table blocks when we move the inode table. (Closes: #290894) * Make sure that we don't write garbage when writing a large inode. * Check NTFS ahead of other filesystems since Windows doesn't always clearing enough of the partition to avoid false positives with older filesystems. (Closes: #291990) * E2fsck now checks the summary filesystem accounting information, and if any of the information is obviously wrong, it will force a full filesystem check. (Closes: #291571) * Clarified and updated tune2fs and blkid man pages * Fix e2fsck to not complain when the resize_inode feature is enabled, s_reserved_gdt_blocks is zero, and there is no DIND block allocated in the resize inode. * Fix blkid -t to display all devices that match the specified criteria, not just the first one. (Closes: #290530) * Add support for the blkid library to recognize Oracle ASM volumes. * Add set_super_value jnl_blocks[] in debugfs. * Fix the filefrag program so that it works correctly with sparse files. * Fix portability problems with FreeBSD, Solaris, and Intel C++ 8.1. * Add support for FreeBSD and Lites as OS Creator values. -- Theodore Y. Ts'o Wed, 26 Jan 2005 10:22:02 -0500 e2fsprogs (1.36rc3-2) unstable; urgency=low * Remove debugging printf's from e2image's -s code. -- Theodore Y. Ts'o Wed, 19 Jan 2005 02:25:53 -0500 e2fsprogs (1.36rc3-1) unstable; urgency=low * New upstream release * Update Italian, French, and Turkish translations * Fixed file descriptor leak in the filefrag program * Add -s option to e2image which scrambles directory entries when making raw image files * Make sure e2fsck doesn't crash if /proc/acpi/ac_adapter does not exist * Added Solaris, FreeBSD portability fixes -- Theodore Y. Ts'o Wed, 19 Jan 2005 00:33:31 -0500 e2fsprogs (1.36rc2-1) unstable; urgency=low * New upstream release * Update Italian translation * Add support for swap partition labels and uuid's -- Theodore Y. Ts'o Tue, 11 Jan 2005 14:12:17 -0500 e2fsprogs (1.36rc1-1) unstable; urgency=low * Fix a FTBFS bug for amd64/gcc-3.0 (Closes: #289133) * Minor man page clarifications. (Closes: #273679) * Add support for online resizing via the resize inode. * Badblocks will now correctly display block numbers greater than 999,999,999 in its progress display. * tune2fs will not allow the user from setting a ridiculous number of reserved blocks which would cause e2fsck to assume the superblock was corrupt. E2fsck's standards for what is a ridiculous number of reserved blocks has also been relaxed to 50% of the blocks in the filesystem. * The blkid library will return vfat in preference to msdos, and ext3 in preference to ext2 (if the journalling flag is set) so that mount will do the right thing. (Closes: #287455) * The fsck program will now accept an optional filedescriptor argument to the -C option. * Mke2fs will now use the -E option for extended options; the old -R (raid options) option is still accepted for backwards compatibility. * Fix a double-free problem in resize2fs. (Red Hat Bugzilla #132707) * Mke2fs will now accept a size in megabytes or gigabytes (via "32m" or "4g" on the command line) if the user finds this more convenient than specifying a block count. * Fix an obscure, hard-to find bug in "e2fsck -S" caused by an inode cache coherency problem. * Debugfs now supports a new command, set_inode_field, which allows a user to manually set a specific inode field more conveniently, as well as set entries in the indirect block map. * Debugfs's set_super_value command has been enhanced so that the user can set most superblock fields, including the date/time fields and some of the more newly added superblock fields. * E2fsprogs programs now accept an offset to be passed to the file specifiers, via the syntax: "/tmp/test.img?offset=1024" * E2fsprogs will now accept blocksizes up to 65536; kernel support on the x86 doesn't exist, but it is useful on other architectures. * Fix bug in debugfs where kill_file would lead to errors when deleting devices and symlinks. (Sourceforge Bugs #954741 and #957244) * Fix bug in the blkid library when detecting the ocfs1 filesystem * Updated Italian translation file * E2fsck will now recover from a journal containing illegal blocks. -- Theodore Y. Ts'o Fri, 7 Jan 2005 20:22:36 -0500 e2fsprogs (1.35-9) unstable; urgency=low * Minor man page clarifications. (Closes: #273679) -- Theodore Y. Ts'o Tue, 28 Sep 2004 10:29:29 -0400 e2fsprogs (1.35-8) unstable; urgency=low * Remove double "//" when listing attributes in the root directory or when there is a trailing '/' in the directory name. (Closes: #272943) * Make sure the configure files are newer than configure.in the debian/rules file so that a dpkg-source created patch won't trigger an attempt rebuild of the configure script. (Closes: #272558, #273242) * Make sure /usr/lib/e2initrd_helper is in the e2fsprogs package. (Closes: #272698, #272728, #273161, #273163) * Only use blocksizes > 4k on Linux 2.6 and newer systems. (Closes: #271064) -- Theodore Y. Ts'o Sat, 25 Sep 2004 07:37:52 -0400 e2fsprogs (1.35-7) unstable; urgency=low * Make sure "done" gets correctly translated in badblocks(8), and update French translation (Closes: #252836) * Always build the fsck wrapper on Debian systems (Closes: #248050) * Filter out linux-gate.so, which is a pseudo entry for the 32->64bit translation for amd64 systems, in the initrd creation script. (Closes: #253595) * Change the initrd scripts to be use a helper program which avoids needing to mount the root filesystem and use awk to query the /etc/fstab file. (Closes: #247775) * Add support for the ocfs2 filesystem to the blkid library. * Various portability fixes for Hurd and FreeBsd, as well as removing XSI:isms. (Closes: #256669, #264630, #269044, #255589) * Update config.guess and config.sub from the FSF. * Minor manual page clarifications (Closes: #268148) * Fix write ordering problems to make e2fsck more robust in the face of system crashes while replaying the journal, etc. * Fix debugging printf in resize2fs. (Closes: #271605) * Add debugfs -d option to use a separate source of data blocks when reading from an e2image file. * Add e2image -I option which allows the e2image metadata to be installed into a filesystem. * Change e2fsck to accept directories greater than 32MB. * Add test_io mechanisms to abort after reading or writing to a particular block. * Fix blkid file descriptor and memory leak. -- Theodore Y. Ts'o Sat, 18 Sep 2004 09:58:46 -0400 e2fsprogs (1.35-6) unstable; urgency=low * In the mkinitrd script, make sure the directories exist before trying to copy in the needed shared libraries. (Closes: #244058, #246480) * In the mkinitrd script, use LD_ASSUME_KERNEL=2.4 if necessary. (Closes: #245931) * In the mkinitrd script copy in /usr/bin/awk instead of /usr/bin/mawk. (Closes: #245670) * In the initrd script, fail quietly if /mnt/etc/fstab does not exist. (Closes: #246917) * Minor updates to German translation (Closes: #244105) * Since woody's sysvinit package is before the initscripts were broken out we need an explict Conflict: sysvinit (<< 2.85-4) header. (Closes: #243829) * Update the UUID library man pages * Fix a Y8.8888K potential problem with the uuid library * Minor updates to the German translation * Clarified/corrected the copyright statements of the UUID and blkid libraries in the Debian copyright files. * Added sanity check to the blkid library so that if current time is less than last time a device is verified, force a reverification since it means the system time is not trustworthy. -- Theodore Y. Ts'o Tue, 4 May 2004 16:23:06 -0400 e2fsprogs (1.35-5) unstable; urgency=low * Add uuid_unparse_upper() and uuid_unparse_lower() functions to the uuid library. * Address GNU/KFreeBSD portability issues (Closes: #239934) * Use unsigned for 1 bit wide bitfields in header files to avoid Intel C++ compiler warnings. * Use C99 stdint.h types in the uuid library * Fix up and cleanup uuid man pages * Change the licensing of the uuid man pages to be 3-clause BSD. * Fix the initrd scripts so that the automatic ext3 journal conversion actually works correctly; also allow conversion of the root filesystem from ext3 back to ext2 (Closes: #241183) * Minor man page fixes (Closes: #241940, 242995) * Use the DEBUGFS_PAGER environment variable in preference to PAGER (Closes: #239547) * Added French translation * Be flexible about the name of the ACPI device that corresponds to the AC adapter (Closes: #242136) -- Theodore Y. Ts'o Mon, 12 Apr 2004 12:38:34 -0400 e2fsprogs (1.35-4) unstable; urgency=low * Fix bug in the blkid library (introduced in 1.35-3) which caused the probe function to completely malfunction. (Closes: #239191) * Make the debugfs command's link command set the filetype information correctly. * Update the Polish, Swedish, and Turkish translations * Add an -o option to the blkid program which allows the user to control the output format of blkid. * Fixed and cleaned up the tune2fs and blkid man pages (Closes: #238741) * Improve UUID generation algorithm (use all 14 bits in the clock sequence) * Change the license on the UUID library to be 3-clause BSD. * Remove the only-partially-implemented -p option to blkid. -- Theodore Y. Ts'o Sun, 21 Mar 2004 20:17:03 -0500 e2fsprogs (1.35-3) unstable; urgency=low * Mention e2image's limitation in writing a normal image file to stdout (Closes: #236383) * Only use BLKGETSIZE64 on Linux 2.6 since it is unreliable on Linux 2.4. (Closes: #236528) -- Theodore Y. Ts'o Mon, 8 Mar 2004 14:19:15 -0500 e2fsprogs (1.35-2) unstable; urgency=low * Use 64-bit ioctl's if present to determine the 64-bit size of a device * Add tune2fs to the e2fsprogs udeb package (Closes: #235639) -- Theodore Y. Ts'o Tue, 2 Mar 2004 10:13:39 -0500 e2fsprogs (1.35-1) unstable; urgency=low * New upstream version. * Fix "badblocks -t random". (Closes: #234828) * Fix "e2fsck -k". (Closes: #234993) * Change badblock's default number of blocks tested at once from 16 to 64. (Closes: #232240) * ss-dev and comerr-dev now use a versioned dependency for libss2 and libcomerr2, respectively. (Closes: #235280) -- Theodore Y. Ts'o Sat, 28 Feb 2004 10:14:19 -0500 e2fsprogs (1.34+1.35-WIP-2004.01.31-2) unstable; urgency=low * Add a new -k option to e2fsck which keeps the existing badblocks list when using the -c option. (Closes: #229103) * Update debugfs to support new large major/minor device numbers supported by Linux 2.6. (Closes: #865289) * Fix makefiles so that it will build correctly with --enable-profile. * Add -mieee when compiling with GCC on an Alpha. * Fix e2fsck preen mode messages using pass 1B/C/D. * Fix the debugfs man page. (Closes: #232406) * Fix the ext2fs.h header file to work correctly with C++. * e2fsck and debugfs now correctly deals with symlinks that have extended attribute information, such as those created by SE Linux. (Closes: #232328) * Make sure filefrag actually gets compiled under Linux (Closes: #230992) -- Theodore Y. Ts'o Tue, 24 Feb 2004 00:16:43 -0500 e2fsprogs (1.34+1.35-WIP-2004.01.31-1) unstable; urgency=medium * Fix byte swap bugs in e2fsck that caused the journal backup location in the superblock and symlinks created by SE Linux to be cleared by e2fsck on big-endian machines. (Closes: #228723) * Chattr now stops processing options when it sees '--'. (Closes: #225188) * Add FreeBSD port fixups * Use the DEBUGFS_PAGER environment variable in preference to PAGER. Document that less is a really, really, really bad pager to use for debugfs (unfortunately, Debian policy says we must use /usr/bin/pager even if it results in very annoying behaviour for the user since 'less' is used in preference to 'more' unless it is globally overridden via update-alternatives(8). Oh, well. Debian users are encouraged to set DEBUGFS_PAGER to be "more" in their dot files to avoid this brain damage). * Fix libuuid1-udeb so that it provides libuuid1. (Closes: #229633) * Fix bug in uuid library when there is no network card and the library is generating a time-based uuid. The random MAC address was not correctly generated to be a multicast address. * Install the filefrag program. * Don't try to compile filefrag on non-Linux platforms. (Closes: #226456) * Minor manual page clarifications (Closes: #222606, #214920) -- Theodore Y. Ts'o Sat, 31 Jan 2004 20:57:35 -0500 e2fsprogs (1.34+1.35-WIP-2003.12.07-2) unstable; urgency=low * Fix test for /etc/mkinitrd/scripts/e2fsprogs to make sure it gets removed. (Closes: #213275) * Debugfs now searches for the appropriate pager to use, beginning with /usr/bin/pager, and then falling back to 'less' and 'more'. (Closes: #221977) * Fixed mangled encoding in Czech locale file. (Closes: #214633) * Fix bug where using debugfs to copy a file from /dev/null caused in correct mode bits. (Closes: #217456) * Fixed a bug where e2fsck would bomb out if a journal needed to be replayed when using an alternate superblock. * Minor manual page fixups/cleanups. * Debugfs's mkdir command will automatically expand the directory if necessary. (Closes: #217892) * Fix a bug in e2fsck which caused it to incorrectly fix a filesystem when reconnecting a directory requires creating a lost+found directory. (Closes: #219640) * Add Spanish translation. -- Theodore Y. Ts'o Wed, 24 Dec 2003 14:24:14 -0500 e2fsprogs (1.34+1.35-WIP-2003.12.07-1) unstable; urgency=medium * Added regression tests for mke2fs and dumpe2fs. * Support 2.6 kernel header files. (Closes: #221778) * Fix bug which could a core dump if a non-existent LABEL or UUID specifier is passed to e2fsck or tune2fs. * Fix handling of corrupted indirect blocks in the bad block inode. * If the number of mounts until the next forced filesystem check is less than 6, mention this to the user. (Closes: #157194) * E2fsck will try to avoid doing a forced filesystem check if a system is running on batteries according to APM or ACPI. (Closes: #205177) * Fix problems in the German translation. (Closes: #2000086) * Updated Swedish translation and added Polish translation. * Fix signed vs unsigned bug which could cause the com_right function to seg fault. (Closes: #213450) * Add libuuid1-udeb (Closes: #221777) -- Theodore Y. Ts'o Sat, 22 Nov 2003 11:51:13 -0500 e2fsprogs (1.34+1.35-WIP-2003.08.21-3) unstable; urgency=low * Adjust the man page descriptions so that "apropos ext2" or "apropos ext3" will find all of the e2fsprogs man pages. (Closes: #206845) * Protect against a potential core dump in e2fsck when printing a message about a backup superblock. * Fix a bug in mke2fs which caused -T largefile or -T largefile4 to core dump due to a division by zero error. (Closes: #207082) * Force e2fsprogs to use the matched version of e2fslibs. (Closes: #208103) -- Theodore Y. Ts'o Sun, 31 Aug 2003 21:49:52 -0400 e2fsprogs (1.34+1.35-WIP-2003.08.21-2) unstable; urgency=low * When moving the journal or backing up the journal inode information, make sure e2fsck updates all the superblocks, and not just the master superblock. * Change the priority of libblkid1-udeb to be required instead of standard, to match the override file. -- Theodore Y. Ts'o Thu, 21 Aug 2003 08:50:34 -0400 e2fsprogs (1.34+1.35-WIP-2003.08.21-1) unstable; urgency=low * Fix compile_et to output the correct prototype for initialize_xxx_err_table_r() in the header file. (Closes: #204332) * E2fsck will avoid printing ^A and ^B characters bracketing the progress bar when stdout is a tty device. (Closes: #204137) * Add support for storing the journal inode location in the superblock so that e2fsck can recover from a corrupted inode table after a power failure. * Move the initrd script from /etc/mkinitrd/scripts to /usr/share/initrd-tools/scripts so that mkinitrd will not remove the file when it is uninstalled. (Closes: #204019) * Remove unneeded files in debian directory: blkid-dev.substvars and e2fsprogs-bf.lintian-overrides. (Closes: #203914) * Support "noopt" in DEB_BUILD_OPTIONS instead of "debug". (Closes: #203914) -- Theodore Y. Ts'o Thu, 21 Aug 2003 01:47:58 -0400 e2fsprogs (1.34+1.35-WIP-2003.08.01-1) unstable; urgency=low * Fix O_DIRECT test to prevent badblocks from screwing up after finding a bad block. (Closes: #203713) * Add Heimdal compile_et extensions from Philipp Thomas (pthomas@suse.de) * Fix potential pointer aliasing bugs caused by type-punning and gcc 3.x -- Theodore Y. Ts'o Fri, 1 Aug 2003 13:44:58 -0400 e2fsprogs (1.34-2) unstable; urgency=low * Fix erroneous reference to /usr/share/doc/e2fsprogs/html-info in /usr/share/doc-base/libext2fs (Closes: #203157) * Explicitly specify the version of libblkid1 needed in e2fsprogs.shlibs.local in order to avoid picking up the wrong dependency. (Closes: #203157) * Changed priority of libblkid1-udeb to be standard, not required. -- Theodore Y. Ts'o Wed, 30 Jul 2003 19:47:32 -0400 e2fsprogs (1.34-1.1) unstable; urgency=low * Non-maintainer upload. * don't call ldconfig in udebs. * fix dependencies of e2fsprogs-udeb. -- Bastian Blank Tue, 29 Jul 2003 12:11:54 +0200 e2fsprogs (1.34-1) unstable; urgency=low * New upstream version. * Fixed bug in fsck which caused it to waste CPU by spinning while waiting for a child fsck process under some circumstances. * Fixed bug in blkid library which would cause it to spin forever if /proc is not mounted and /etc/blkid.tab is not present. * Improved the blkid library's UDF's probing functions. * Fixed the blkid library so it will remove delete the LABEL attribute from its cache when a filesystem that previously had a label no longer has one. * Added Swedish translation. * Remove debugging printf in badblocks program (Closes: #201499) * Split shared libraries out of the e2fsprogs package into separate packages: libss2, libcomerr2, libuuid1, and e2fslibs. (Closes: #201155, #201164) * Warn the user when creating a filesystem with a journal and a blocksize greater than 4096, since some kernels don't support ext3 with large block sizes. (Closes: #193773) -- Theodore Y. Ts'o Sat, 26 Jul 2003 01:01:55 -0400 e2fsprogs (1.33+1.34-WIP-2003.05.21-2) unstable; urgency=low * Set up FreeBSD configuration defaults (Closes: #195274) * Clarify resize2fs man page (Closes: #195616) * Fix resize2fs to deal with filesystem with bad blocks * Fix spelling error in e2fsck * Add workaround for intl library on Darwin * Fix gcc -Wall nitpicks * Round down the default size of the filesystem for mke2fs and resize2fs to be a multiple of the pagesize to work around a potential Linux kernel bug * Fix bug in mke2fs where it could die with a floating exception if the device does not support the BLKSSZGET ioctl (Closes: #196734) * Add conflicts against older versions of sysvinit that don't correctly handle an exit code that has the bit #2 set. (Closes: #183675) * Badblocks will attempt to use O_DIRECT if it is safe to do so. (Closes: #198006) * Use symbolic links for fsck.ext{2,3} and mkfs.ext{2,3} in the udeb package since busybox tar can't deal with hard links. (Closes: #196508) -- Theodore Y. Ts'o Sat, 12 Jul 2003 03:16:08 -0400 e2fsprogs (1.33+1.34-WIP-2003.05.21-1) unstable; urgency=low * Fix problems with compiling e2fsprogs with NLS support on woody (Closes: #193372) * Remove the extraneous de-utf.po file. * Add get-text to build-depends. * Use ngettext (abbreviated with P_()) to simplify the statistics reporting. * Fix badblocks to be able to support arbitrary 4 byte test patterns. * Fix bug which caused us to accidentally include the EVMS plugin in the e2fsprogs package (which doesn't work, but causes confusing messages to show up when the evms client is started). * If the hardware sector size of a device is larger than the default blocksize, use the hardware sector size as the blocksize when creating a filesystem, to solve problems with s/390 DASD's. * Add a shared library dependency to libuuid to libblkid (Closes: #194094) * Add initial implementation of a dump_unused command (Closes: #79164) -- Theodore Y. Ts'o Sun, 18 May 2003 01:24:16 -0400 e2fsprogs (1.33-5) unstable; urgency=low * Clarify blocksize units when displaying messages in resize2fs, and support using suffixes (sectors, kilobytes, megabytes, gigabytes) to the size parameter to indicate units. (Closes: #189814) * Fix debugfs core-dumping problem caused by getopt. (Works around: #192834) * Add package dependency to shlibs for comerr to indicate support for kth compatibility. (Closes: #193096) -- Theodore Y. Ts'o Tue, 13 May 2003 23:45:08 -0400 e2fsprogs (1.33-4) unstable; urgency=low * Add replaces field to comerr-dev to resolve a file conflict with /usr/include/com_err.h and the libkrb5-dev package. (Closes: #192277) * Add -t option to badblocks to control the test pattern used. * Remove e2fsprogs-bf package, as it is obsolete. (Closes: #183453) * Remove NLS support from e2fsprogs-udeb. Save 5.5k on the boot floppies / install media. -- Theodore Y. Ts'o Thu, 8 May 2003 10:25:05 -0400 e2fsprogs (1.33-3) unstable; urgency=low * Add full Heimdall/Kerberos4-kth compatibility to com_err routines. * Declare comerr-dev as replacing << e2fslibs-dev 1.33-2, to avoid errors when upgrading to the new versions of comerr-dev and e2fslibs-dev -- Theodore Y. Ts'o Tue, 6 May 2003 00:29:47 -0400 e2fsprogs (1.33-2) unstable; urgency=low * Fix up NLS support - Fix message abbreviations support (i.e., @g --> group) - Update to gettext 0.11.5 - Add Czech translation - Install message catalogs - Other miscellaneous NLS bug fixes * Add new debugfs command, imap, which prints the location of a specified inode in the inode table. * Put /usr/include/com_err.h in comerr-dev instead of e2fslibs-dev. (Closes: #191899) * Add support for OV-style continuations in compile_et. (Closes: #191900) -- Theodore Y. Ts'o Mon, 5 May 2003 18:13:12 -0400 e2fsprogs (1.33-1) unstable; urgency=low * New upstream version (Closes: #189687) -- Theodore Y. Ts'o Mon, 21 Apr 2003 13:49:52 -0400 e2fsprogs (1.32+1.33-WIP-2003.04.14-1) unstable; urgency=low * New upstream version - Add new utility program, logsave, to capture the output of fsck during the boot sequence * Add support for the -a and -s options to logsave. * Change e2fsck to bracket its progress bar output with ctrl-A and ctrl-B characters, so that logsave -s can omit writing the progress bar output to the log file. * Avoid printing the version banner for mke2fs if the -q option is specified. (Closes: #172716) -- Theodore Y. Ts'o Wed, 16 Apr 2003 15:27:20 -0400 e2fsprogs (1.32+1.33-WIP-2003.03.30-3) unstable; urgency=low * Provide /usr/include/com_err.h, which was previously provided by the libkrb5-dev package * Change the section of com_err-dev, ss-dev, uuid-dev, libblkid-dev, e2fslibs-dev to libdevel * Add libblkid1-udeb package for the Debian Installer. * Use the SS_READLINE_PATH environment variable to control the search for a suitable readline library. * Fix bug in mke2fs, which was was incorrectly checking the argument to the -g option if the default block size is used. (Closes: #188319) * Update man pages. (Closes: #188318) * Mke2fs can be given a minimum block size by passing in a negative number to the -b option. * Update to standards 3.5.9 -- Theodore Y. Ts'o Sat, 12 Apr 2003 02:52:17 -0400 e2fsprogs (1.32+1.33-WIP-2003.03.30-2) unstable; urgency=low * Fix XFS superblock definition. Add support to extract UUID and labels for JFS and ROMFS. * Make the random number generator more paranoid about potentially buggy /dev/random devices. * The badblocks program now flushes its output as it discovers bad blocks. * Imported bug fixes to EVMS driver from the EVMS 2.0 tree. Fixed a few potential hangs, and eliminated a file descriptor leak. * E2fsck now updates the global free block and inode counters from the block group specific counters quietly. This is needed for an experimental kernel patch which improves SMP scalability by not locking the entire filesystem during block or inode allocation; if the filesystem is not unmounted cleanly, the global counts may not be accurate. * Fix a bug in fsck which can cause it to hang trying to access the floppy disk if there the floppy drive has filesystem type of 'auto'. (Closes: #187812) -- Theodore Y. Ts'o Sun, 6 Apr 2003 23:13:50 -0400 e2fsprogs (1.32+1.33-WIP-2003.03.30-1) unstable; urgency=low * Change compile_et to generate header files that use instead of , so the current version of the header file is used. Remove legacy K&R, varargs, and pre-POSIX signal support. * Fix (one more time!) Apple Darwin port in blkid/getsize.c -- Theodore Y. Ts'o Sun, 30 Mar 2003 23:34:55 -0500 e2fsprogs (1.32+1.33-WIP-2003.03.25-1) unstable; urgency=low * New maintainer * New upstream release (Closes: #176814, #174766, #166048, #179671, #173612, #175233, #175113, #170497, #185945) -- Theodore Y. Ts'o Sun, 16 Mar 2003 18:05:08 -0500 e2fsprogs (1.32-2) unstable; urgency=high * Applied upstream patch to fix htree problems, and to deactivate it by default in mke2fs (Closes: #181615, #179043) * Be sure removal of libe2fsim doesn't fail, as it's not built on hurd (Closes: #164117). -- Yann Dirson Fri, 21 Feb 2003 00:21:44 +0100 e2fsprogs (1.32-1) unstable; urgency=low * New upstream release (Closes: #167108). -- Yann Dirson Tue, 19 Nov 2002 00:18:09 +0100 e2fsprogs (1.29+1.30-WIP-0930-2) unstable; urgency=low * Made mkinitrd script to skip commented-out lines (Closes: #163251). -- Yann Dirson Tue, 15 Oct 2002 00:16:08 +0200 e2fsprogs (1.29+1.30-WIP-0930-1) unstable; urgency=low * New upstream prerelease. * Replaced in mkinitrd script "tune2fs -j" with "tune2fs -O has_journal", as suggested by Theodore Ts'o (Closes: #162949). * Remove --disable-debugfs from mips-nopic flags (Closes: #162674). -- Yann Dirson Thu, 3 Oct 2002 00:05:36 +0200 e2fsprogs (1.29-1) unstable; urgency=low * New upstream release (Closes: #159423). * Fixed typo in chattr manpage (Philipp Matthias Hahn, Closes: #162297). * Generate udeb package for debian-installer (Martin Sjoegren, Closes: #162212). * Fixed installation of mkinitrd script (don't use dh_install). Remove it from the wrong location where it was, in preinst. Hopefully no one noticed. * Also have old scripts/e2fsprogs.mkinitrd removed. * Bumped Standards-Version to 3.5.6, no change. 3.5.7 will need a bit of work but not tonight. -- Yann Dirson Thu, 26 Sep 2002 01:46:25 +0200 e2fsprogs (1.28-5) unstable; urgency=low * The "this time it will work ! (famous last words)" release. * Now that it builds, ensure the dir in which we install this damn mips non-pic lib exists. -- Yann Dirson Tue, 17 Sep 2002 00:04:49 +0200 e2fsprogs (1.28-4) unstable; urgency=low * Moved setting of CFLAGS to the correct place when building the special mips non-pic lib (Closes: #159757 again). -- Yann Dirson Sun, 15 Sep 2002 21:19:19 +0200 e2fsprogs (1.28-3) unstable; urgency=low * Don't use special cflags at configure time when building the special mips non-pic lib, in yet another attempt to fix my adaptation of the patch from the mips team. Also added --disable-nls which was present in the original patch. * Remove debian/BUILD-MIPS on clean. * Install mkinitrd script as scripts/e2fsprogs, not as scripts/e2fsprogs.mkinitrd. -- Yann Dirson Mon, 9 Sep 2002 23:01:31 +0200 e2fsprogs (1.28-2) unstable; urgency=low * Fixed my adaption of the mips non-pic build (Closes: #159757). -- Yann Dirson Fri, 6 Sep 2002 00:03:45 +0200 e2fsprogs (1.28-1) unstable; urgency=low * New upstream release. -- Yann Dirson Mon, 2 Sep 2002 23:34:55 +0200 e2fsprogs (1.27+1.28-WIP-0817-1) unstable; urgency=low * New upstream pre-release. Closes: #138003, #144621, #145044, #151990, #152029, #152891, #155007, #131350, #147256, #153102. * New binary: findfs. * Added execute permissions to the mkinitrd script (thanks lintian). * Don't ship FSIM for EVMS for now. -- Yann Dirson Sun, 25 Aug 2002 19:32:12 +0200 e2fsprogs (1.27+1.28-WIP-0626-2) experimental; urgency=low * Remove bogus shlibs deps on "e2fsprogs (>= )" -- Theodore Y. Ts'o Sat, 17 Aug 2002 17:59:17 -0400 e2fsprogs (1.27+1.28-WIP-0626-1) experimental; urgency=low * New upstream pre-release: ** Supports v2 ACL format (Closes: #138160). * Removed explicit --mandir flag, as it now uses FHS man location by default. * Added mkinitrd script, "upstream-contributed" ;) by Ted Ts'o (Closes: #148064). * Build a no-pic version of libext2fs.a on mips and mipsel, patch by Florian Lohoff, adapted for style consistency (Closes: #145432). * Removed presumably-useless and presumably-broken CFLAGS propagation. If someone misses that, I'll add ${CFLAGS} to --ccopts. * Switched to debhelper v4. * Added ${misc:Depends} to all packages' Depends field. * Fixed typos in fsck.8, added an example for clarity (Closes: #145044). * Fixed typo in chattr manpage (Closes: #141938). * Fixed typo in tune2fs manpage (Closes: #148514). -- Yann Dirson Tue, 23 Jul 2002 00:12:33 +0200 e2fsprogs (1.27-2) unstable; urgency=medium * Urgency medium since this fixes a RC bug. * Generate the shlibs file instead of just copying it in place, and make it produce deps on "e2fsprogs (>= )" as well, to cope with new functions introduced in the libs (Closes: #139274). * Added a note on this in README.Debian. -- Yann Dirson Thu, 21 Mar 2002 23:58:48 +0100 e2fsprogs (1.27-1) unstable; urgency=low * New upstream release (Closes: #136737). * No more use for dh_link'ing *.ext[23], it's now done by upstream Makefiles. * Only include (new) inode_io.o from libext2fs when fileio.o is, or the BF build fails because of this additional (unused) member (upstream hint). -- Yann Dirson Mon, 11 Mar 2002 00:17:32 +0100 e2fsprogs (1.26-3) unstable; urgency=low * Simple rebuild after fixing the settings of my computer's clock, so that katie accepts to install the package. -- Yann Dirson Sat, 23 Feb 2002 14:53:15 +0100 e2fsprogs (1.26-2) unstable; urgency=low * Applied upstream patch dealing with the rlimit filesize variation among archs and kernel versions (Closes: #133909). * Create fsck.ext3.8 symlink (Closes: #121526). -- Yann Dirson Sat, 23 Feb 2002 06:44:02 +0100 e2fsprogs (1.26-1) unstable; urgency=low * This uploads fixes 10 bugs, including data-corruption problems, and adds much to the ease of maintenance and problem tracking. Good choice for woody. * New upstream release (Closes: #106622, #116975, #118443, #119624, #120171, #120077, #129828, #132764). ** Fixes for data-corruption bugs not reported to the BTS: e2fsck trashed external journals needing to be replayed, e2fsck now hides visible journal files (data corruption problems when not excluded from a backup and then restored) (Closes: #132654). ** Other noticeable bugs fixed include: e2fsck null pointer dereferencing, fsck did not finds LVM volumes by UUID or by label, largefile support (ie. dealing with filesystems inside 2GB+ files) was broken in several programs. * Switch to debhelper v3 to get ldconfig automatically handled (lintian reported that it was broken). Now call dh_makeshlibs, but still override its generated shlibs file with ours, to get compiled packages depend of the correct virtual packages, which include full sonames. * Removed call do dh_installman (Closes: #115526). * Cleaned up maintainer scripts with dead code - most things are now more properly handled by debhelper. Removed an "exit 0" lurking in preinst - can't find a reason for it in the changelog, it was probably here for ages. * Remove obsolete maint-scripts in binary-arch, as they are provided by upstream. * Also remove upstream-shipped config.cache before configuring. That shouldn't impact us, but well, that makes lintian happy :) -- Yann Dirson Fri, 8 Feb 2002 06:12:35 +0100 e2fsprogs (1.25-1) unstable; urgency=high * New upstream bugfix release (Closes: #112414), targeted to woody. * com_err.info provided again now that it was fixed upstream. * Added metainfo to com_err.texinfo so that it gets indexed correctly (thanks lintian). Moved @setfilename and @settitle to the top so that things get output as expected. * Added lintian overrides for -bf and -static packages. * Put all stamp files in debian/stampdir. -- Yann Dirson Sat, 22 Sep 2001 16:22:47 +0200 e2fsprogs (1.24a-1) unstable; urgency=high * New upstream release (Closes: #109577). ** The only new code in there is in codepaths that are only visited when previously unsupported features are used, so they add virtually no risk. Support for raw image files will be of great help to debug users' problems. Urgency set to "high" to make sure this version gets released with woody. ** Fsck prints a warning message if now valid filesystems are passed to it. (Closes: #107458). ** Fsck -A will not try to interpret device names for filesystems which have a pass number is 0. (Closes: #106696). ** If -O none is passed to mke2fs, it will now not set the sparse_super feature (Closes: #108165). ** Tune2fs has been fixed to make sure that only error messages go to stderr, and normal message go to stdout (Closes: #108555). ** Minor man pages updates (Closes: #30833, #108174). ** Doc fixes (Closes: #110621). -- Yann Dirson Tue, 4 Sep 2001 23:44:56 +0200 e2fsprogs (1.22-2) unstable; urgency=medium * This is only a trivial patch to stop some user confusion, and would be great to have in woody, hence the urgency. * Applied upstream patch to e2fsck to warn user when some errors were not corrected due to user answering "no" (Closes: #104502). -- Yann Dirson Sat, 28 Jul 2001 23:01:49 +0200 e2fsprogs (1.22-1) unstable; urgency=low * Final 1.22 release: ** Fixes build problems on big-endian (Closes: #101686, #101798). -- Yann Dirson Sat, 23 Jun 2001 14:03:17 +0200 e2fsprogs (1.21+1.22-WIP-0620-1) unstable; urgency=low * New upstream pre-release, critical for big-endian platforms (Closes: #101752). * Re-applied hurd fix again. * Build e2fsprogs-bf with -Os to gain more space. -- Yann Dirson Fri, 22 Jun 2001 00:18:40 +0200 e2fsprogs (1.21-1) unstable; urgency=low * Final 1.21 release. * Re-applied hurd fix that did not came quickly enough to make it in 1.21. * Fixed name of copyright file in e2fsprogs-bf. -- Yann Dirson Wed, 20 Jun 2001 22:32:08 +0200 e2fsprogs (1.20+1.21-WIP-0614-2) unstable; urgency=low * Don't build PIC libs, build a reduced version of the libs instead, in package e2fsprogs-bf. Made this new package conflict with e2fsprogs. * Compilation fix for the Hurd (Closes: #101361). -- Yann Dirson Tue, 19 Jun 2001 23:33:25 +0200 e2fsprogs (1.20+1.21-WIP-0614-1) unstable; urgency=low * New upstream pre-release (Closes: #100559, #100304). * Fixed lib/ext2fs/Makefile.in for installation of new generated .h file. -- Yann Dirson Thu, 14 Jun 2001 16:14:11 +0200 e2fsprogs (1.20+1.21-WIP-0608-1) unstable; urgency=low * New upstream pre-release (critical ext3 bugfix mostly). * Correctly use dh_installinfo. * Adjusted various things accordingly. -- Yann Dirson Sat, 9 Jun 2001 00:25:51 +0200 e2fsprogs (1.20-4) unstable; urgency=low * Cleanup generated substvars files now that debhelper uses other names (may cause problems on other archs). Build-dep on debhelper 3.0.30 or newer to be sure it won't cause broken uploads. Allows to get rid of hairy dep, but cannot build straightforwardly on potato any more... -- Yann Dirson Wed, 6 Jun 2001 02:33:32 +0200 e2fsprogs (1.20-3) unstable; urgency=low * Create all symlinks to uuid-generate.3 (Closes: #99573). * Somewhat modernized debian/rules (debhelper v2, etc.). * Fixed libss2 copyright file. * Fixed e2fslibs-pic short description. -- Yann Dirson Wed, 6 Jun 2001 01:19:19 +0200 e2fsprogs (1.20-2) unstable; urgency=low * Added support for building pic libs to Makefile.elf-lib. * New package e2fslibs-pic for boot-floppies team (Closes: #99285). * Use -N on dh_gencontrol instead of lots of -p. -- Yann Dirson Thu, 31 May 2001 23:59:51 +0200 e2fsprogs (1.20-1) unstable; urgency=low * Final 1.20 release. * Added new zsh-static to the list of possible static shells recommended by e2fsck-static. -- Yann Dirson Mon, 28 May 2001 21:39:06 +0200 e2fsprogs (1.19+1.20-WIP-0520-1) unstable; urgency=low * New upstream pre-release snapshot: ** Extended "fsck -t" syntax (Closes: #89483). ** Fix handling of devices for which fsck can't determine a physical spindal, causing lockup when checking LVM volumes (Closes: #98103). ** Fixed typo in e2fsck-static description - thanks Ted :). * Fixed small compilation bug in fsck.c -- Yann Dirson Mon, 21 May 2001 20:47:10 +0200 e2fsprogs (1.19+1.20-WIP-0514-2) unstable; urgency=low * Tighten dependency on debhelper. -- Yann Dirson Tue, 15 May 2001 21:38:47 +0200 e2fsprogs (1.19+1.20-WIP-0514-1) unstable; urgency=low * New upstream pre-release snapshot: ** new program: e2image. ** e2fsck validates file descriptor specified in -C (Closes: #55220) ** Fix multiple progress bar fsck bug (Closes: #65267) ** Add devfs support to fsck (Closes: #94159) ** Fix debugfs dump cmd looping on disk errors (Closes: #79163) ** Miscellaneous manual page clarifications (Closes: #63442, #67446, #87216) ** Compilation fixes for Hurd (Closes: #52045). ** New config.{guess,sub} for parisc support (Closes: #94690). ** Improved ext3 support ** tune2fs can now safely modify mounted filesystems * Added missing @dircategory entry to libext2fs.info (lintian) * Moved debugfs back from /usr/sbin/ to /sbin/ (Closes: #97035). * Moved e2label back to /sbin/ as well, as it is now a hard link to tune2fs. * New binary package with statically linked e2fsck, recommending a statically linked shell (Closes: #62611). * All deps against e2fsprogs itself now versioned (lintian). * Updated copyright file (upstream location, packaging copyright notice for previous maintainers and for Alcove). * Remove call to dh_testversion, use versioned build-dep instead (lintian). * Support for DEB_BUILD_OPTIONS debug/nostrip for policy 3.2 compliance. * Use dh_shlibdeps -l instead of setting LD_LIBRARY_PATH explicitly - necessary for new versions of fakeroot, and requires debhelper 3.0.23 for a fix. Well finally 3.0.23 is buggy, leave this for later. * Avoid to call ldconfig at "make install" time, too costly. * Get rid in control files of references to never-released standalone lib files (split attempted in 1997/98). * Bumped Standards-Version to 3.5.4. -- Yann Dirson Tue, 15 May 2001 14:28:39 +0200 e2fsprogs (1.19-4) unstable; urgency=medium * Added texinfo to build-deps (Closes: #87685). -- Yann Dirson Tue, 3 Apr 2001 09:03:13 +0200 e2fsprogs (1.19-3) unstable; urgency=low * Drop findsuper binary, and suggest gpart (Closes: #74034). * Drop flushb and extend at upstream request (Closes: #39506). * Applied upstream fix for chattr on large files (Closes: #72690). * Applied clarification patch to tune2fs.8 (Closes: #67446). * Applied typo patch to compile_et.1 (Closes: #63786). * Include in e2fsck/journal.c (Closes: #71775). * Suggest parted. -- Yann Dirson Mon, 4 Dec 2000 22:08:06 +0100 e2fsprogs (1.19-2) unstable; urgency=low * Clarified libuuid copyright to LGPL-2, excluding LGPL-2.1. * Added build-dependency on debhelper (Closes: #67532). * Don't parallelize fsck runs on same drive for hd[efgh] (Closes: #59103). * Upload pristine source, -1 was erroneously uploaded as a debian-specific package. -- Yann Dirson Thu, 3 Aug 2000 00:30:49 +0200 e2fsprogs (1.19-1) unstable; urgency=low * New upstream release: ** new program: resize2fs. ** ext3 support. ** NLS support (non-default, activated). ** Compression support (non-default, activated). ** Progress bar nice to serial console (Closes: #66079) ** Ensure filetype feature is turned off for Hurd filesystems (Closes: #61863) * Updated main copyright file for a number of things. * Fixed NLS support for flushb and extend. * Started to add build-depends. * Include new e2p header. -- Yann Dirson Wed, 19 Jul 2000 01:55:27 +0200 e2fsprogs (1.18-3) frozen unstable; urgency=medium * Fix Y2K display-only bug in debugfs - "ls -l" displayed raw tm_year, causing 2000 to be displayed as "100" (Closes: #57135). Potato should be y2k-clean. * Remove empty dirs /usr/share/et/ and /usr/share/ss/ from package e2fsprogs (Closes: #52900). -- Yann Dirson Mon, 21 Feb 2000 23:06:47 +0100 e2fsprogs (1.18-2) unstable; urgency=low * Test for "__sparc__" instead of "sparc" as a cpp macro in mke2fs.c (tests in other places are correct) (Closes: #50012). -- Yann Dirson Fri, 12 Nov 1999 21:40:27 +0100 e2fsprogs (1.18-1) unstable; urgency=low * New upstream (bugfix) release. -- Yann Dirson Fri, 12 Nov 1999 17:27:20 +0100 e2fsprogs (1.17-2) unstable; urgency=low * Applied upstream patch to fix segfault (Closes: #49535). -- Yann Dirson Tue, 9 Nov 1999 22:14:53 +0100 e2fsprogs (1.17-1) unstable; urgency=low * New upstream (bugfix) release. -- Yann Dirson Wed, 27 Oct 1999 23:46:39 +0200 e2fsprogs (1.16-2) unstable; urgency=low * Fixed build of a link list in fsck.c (Closes: #48312). -- Yann Dirson Tue, 26 Oct 1999 01:17:36 +0200 e2fsprogs (1.16-1) unstable; urgency=low * New upstream release. * Re-applied Hurd patches that did not seem to have been received upstream. -- Yann Dirson Sun, 24 Oct 1999 16:11:59 +0200 e2fsprogs (1.15-3) unstable; urgency=low * Fixed minor typo for the Hurd. * Fixed various Hurd defines to __GNU__ (Closes: #44407). * Switched doc/ and info/ to FHS. * Cleaned up debian/rules to use new debhelper features. * Bounced Standards-Version to 3.0.1. * Do not install buggy com_err.info, shipped as HTML. * Removed partinfo from the package, following the wish of upstream author, because of duplicate functionality with "fdisk -l" (Closes: #42139). -- Yann Dirson Mon, 20 Sep 1999 23:04:06 +0200 e2fsprogs (1.15-2) unstable; urgency=medium * Changed build directory do debian/BUILD/ - related cleanups in debian/rules. * Fixed partinfo.c to have it compiled, and fixed display of partition device in error messages. * Added /usr/sbin/partinfo to the package (Closes: #42139). * Added note about uuidgen(1) in README.Debian. * Documented in manpage that default mke2fs behaviour is now -r1 -s1 (Closes: #44478). * Documented in mke2fs.8 that -r1 forces -s1, thus ignoring -s0. * Added warning message when -s0 is ignored because of -r1. * Documented -n option of mke2fs. * Fixed display buglet causing trailing commas in list of superblock backups when sparse flag is on and last group has no superblock backup. * Closes: #42434, #43134. -- Yann Dirson Wed, 8 Sep 1999 00:46:38 +0200 e2fsprogs (1.15-1) unstable; urgency=low * New upstream release (Closes: Bug#41763). * All changes to upstream files in 1.14-3 were integrated upstream. * Separated libuuid-dev from e2fslibs-dev because it now has manpages. * Fixed debian/rules for POSIX "rmdir -p" * Corrected the location of the GPL in copyright file. * Moved the manpages to /usr/share/. * Bumped Standards-Version to 3.0.0. -- Yann Dirson Fri, 23 Jul 1999 01:37:51 +0200 e2fsprogs (1.14-3) unstable; urgency=low * Fail with error message when /dev/null cannot be opened (Fixes: Bug#35595). * Fixed typo in e2fsck/unix.c (Fixes: Bug#36960). * Added "emergency help" options summary to e2fsck (Fixes: Bug#11372). * Prepared debian/rules for usr/share/man/. -- Yann Dirson Tue, 1 Jun 1999 23:37:12 +0200 e2fsprogs (1.14-2) unstable; urgency=low * Fixed fsck(1) not to coredump when it does not find its argument in /etc/fstab (Fixes: Bug#33533, Bug#34320, part of Bug#34131). * Fixed spelling of upstream author's name. * Cleaned debian/*.files up. * Undid the changes. * Changed "rmdir -p" invocations in debian/rules into "-rmdir -p" to turn around changed behaviour in fileutils_4.0. -- Yann Dirson Fri, 12 Mar 1999 23:50:47 +0100 e2fsprogs (1.14-1) unstable; urgency=low * New upstream release (Fixes: Bug#33113). * All patches we used for 1.12 are obsoleted by 1.14. * Still have to install com_err.info from debian/rules though. * Incorporated patches from Gordon Matzigkeit for hurd cross-compilation: * - configure.in: Change cross-compile default for sizeof (long long) to 8, so that __s64 and __u64 get defined in ext2fs.h. (BUILD_CC): Discover a native compiler if we are cross-compiling (used for util/subst). - Include linux/types.h instead of asm/types.h, so that non-Linux platforms use the stubbed version provided with this package. - misc/Makefile.in (findsuper): Add a rule so that findsuper gets built with the right compiler flags. - etc. -- Yann Dirson Wed, 10 Feb 1999 23:23:03 +0100 e2fsprogs (1.12-4) frozen unstable; urgency=low * Ship flushb(8) and extend(8) were missing in all 1.12 packages (Fixes: Bug#28771). * Add extend.8 link to undocumented.7. * Replaced my (ad-hoc) fix for Bug#25684 with (really better) one from upstream. -- Yann Dirson Mon, 2 Nov 1998 20:53:28 +0100 e2fsprogs (1.12-3) frozen unstable; urgency=low * Fixed to use angle brackets instead of double quotes when including files from /usr/include/. * Made e2fslibs-dev depend on comerr-dev (Fixes: Bug#26282, Bug#27497). * Fixed mke2fs' display with inode numbers > 9999 (Fixes: Bug#25684). * Use -D__NO_STRING_INLINES on powerpc to allow building the boot blocks in QUIK, the powermac boot loader - reported by Matt McLean. * Removed unsupported info and texi entries from docbase files. -- Yann Dirson Mon, 19 Oct 1998 23:32:41 +0200 e2fsprogs (1.12-2.1) unstable; urgency=low * Non-maintainer upload config.guess and config.sub files modified, to recognize a Arm architecture. -- Turbo Fredriksson Thu, 13 Aug 1998 19:15:56 -0400 e2fsprogs (1.12-2) unstable; urgency=low * Really install e2label.8 manpage. * Removed path from ldconfig invocation, obeying packaging manual. * Improved the subst.c patch (thanks to Peter Moulder). -- Yann Dirson Thu, 14 Jul 1998 14:10:06 +0200 e2fsprogs (1.12-1) unstable; urgency=low * New upstream release - at last out of alpha status ! * Removed some obsolete files from debian/attic. * Patched util/subst.c to expand env variables, and MCONFIG.in to have ${prefix} exported to the `subst' process, so that we get correct paths in mk_cmds and compile_et. Forwarded upstream. * Debian-specific /usr/share/comerr/ renamed to /usr/share/et/, now installed upstream. * Removed -isp from dh_gencontrol invocation - now the default. * Passed lintian 0.5.0. -- Yann Dirson Fri, 10 Jul 1998 22:49:18 +0200 e2fsprogs (1.10-17) frozen unstable; urgency=low * Commented out obsolete code in fsck.c that assumed fstab entries declared `noauto' should not be checked - successfully forwarded upstream (Fixes: Bug#17244). -- Yann Dirson Fri, 15 May 1998 01:14:54 +0200 e2fsprogs (1.10-16) frozen unstable; urgency=low * Changed to in lib/uuid/uuidP.h to allow compilation with glibc 2.0.7pre1 (Fixes: Bug#22039). * Use "build-stamp" as a stamp file instead of "build". * Restored "Provides: e2fslibsg" in order to allow upgrade from unstable hamm. Documented in README.Debian so that it does not get removed again (Fixes: Bug#22019). -- Yann Dirson Mon, 4 May 1998 21:11:38 +0200 e2fsprogs (1.10-15) frozen unstable; urgency=low * Added call to ldconfig in e2fsprogs.postinst. * Fixes checks for install-docs in postinst/prerm (Fixes: Bug#20303, Bug#20304, Bug#20590). * Removed e2fslibsg from what e2fsprogs provides (was just forgotten). * Passed lintian 0.4.2. -- Yann Dirson Sun, 26 Apr 1998 22:27:11 +0200 e2fsprogs (1.10-14) frozen unstable; urgency=low * Fixed checks for install-docs to use -x. * Applied patch for sparc from Juan to fsck.c to compile with glibc 2.1 (Fixes: Bug#20841). -- Yann Dirson Tue, 14 Apr 1998 17:12:19 +0200 e2fsprogs (1.10-13) frozen unstable; urgency=low * test for /usr/sbin/install-docs before trying to run it in postinst and prerm (Fixes: Bug#19461, Bug#19469, Bug#19949, Bug#20006). * comerrg-dev now suggests doc-base. * moved binary packages ss2g, comerr2g and e2fslibsg back into binary package e2fsprogs. * use new virtual packages libcomerr2, libss2, libext2fs2, libe2p2, libuuid1 in shlibs and dependencies. * Changed e2fsprogs dependency on libs to a Pre-Depends (Fixes: Bug#18221). * Not conflicting with old ss2g and comerr2g - these will have to be removed by hand. * Turned around dpkg's bug #17624 in e2fsprogs.preinst. * Updated README.Debian to explain the new package architecture. * Passed lintian 0.3.4. -- Yann Dirson Fri, 20 Mar 1998 13:03:11 +0100 e2fsprogs (1.10-12) unstable; urgency=low * Corrected doc menu entries to point to the real documents' places. * Fixed mk_cmds to really find its support scripts (Fixes: Bug#18779). * Made mk_cmds and compile_et use "sh -e". * Have missing file /usr/include/ss/ss_err.h installed (Fixes: Bug#18778). * Corrected typo in Description (Fixes: Bug#18890). * Fixed descriptions for ss* packages, thanks to Greg Stark (Fixes: Bug#18373, Bug#18447). * Added description of e2p and uuid libs in e2fslibsg-dev description. * Included texinfo sources. * Added doc-base support - suppressed direct menu/dwww support. * Complies with standards version 2.4.0.0. * Passed lintian 0.3.0: * removed .du control file. * updated FSF address. * fixed in *.files nasty ldconfig-symlink-before-shlib-in-deb's. * turned relative links from /usr/lib into /lib into absolute ones. -- Yann Dirson Sun, 8 Mar 1998 19:42:58 +0100 e2fsprogs (1.10-11) unstable; urgency=low * Switched to debhelper (Fixes:Bug#16307). * Updated standards to 2.3.0.1 * Changed maintainer's mail address. * Added conflicts with old versions of dump and quota. * Added html-converted texi docs for libs, with menu(dwww) support. * Added findsuper.8 link to undocumented. * Changed version number of lib packages to reflect the lib versions. * Moved libss into its own packages; added mk_cmds script and support files for libss development (Fixes:Bug#17233). * Added README.Debian file documenting all those dependency stuff. * Included example error tables from libext2fs and libss in comerr-dev. * Included example command tables from debugfs in ss-dev. * Added section/priority files in packages (-isp). * Changed names/relations for doc dirs to comply with policy. * Removed call to ldconfig from e2fsprogs.postinst. -- Yann Dirson Thu, 29 Jan 1998 18:10:03 +0100 e2fsprogs (1.10-10) unstable; urgency=low * Added patch from Michael Alan Dorman for compilation on alpha-Linux (Closes:Bug#15596). * Added '-fsigned-char' to COPTS to allow compilation on ppc-Linux (Closes:Bug#15976). * Suppressed Essential flag on libs, as well as useless Replaces (Closes: Bug#16480). * Suppressed reference to obsolete package `e2fsprogsg' in control info, but Conflicts for security (Closes:Bug#16791). -- Yann Dirson Wed, 7 Jan 1998 22:35:08 +0100 e2fsprogs (1.10-9) unstable; urgency=low * Fixed comerr2g.shlibs to reflect package-name change. * Fixed problem with ss include files being removed from /usr on make install (indeed fixed in 1.10-8). * Added changelog file to comerr2g package (indeed fixed in 1.10-8). * Corrected link from flushb.8 to undocumented (Closes:Bug#15335,Bug#15660,Bug#15675). * Added /sbin/findsuper (Closes:Bug#15224). * Fixed /usr/bin/compile_et script (Closes:Bug#15487). * Included awk scripts in /usr/share/comerr, for use by compile_et. * Changed back the name from "e2fsprogsg" to "e2fsprogs" to get better dependencies. * Strip libraries (Closes:Bug#15667). -- Yann Dirson Tue, 9 Dec 1997 22:52:42 +0100 e2fsprogs (1.10-8) unstable; urgency=low * Added latest patch from Ted for autodetection of llseek() proto. * Switched to libc6, without libc5 compatibility (yet ?). * Turned Pre-Depends into Depends to allow installation. Dirty though. But what were Pre-Depends for anyway ? -- Yann Dirson Sun, 23 Nov 1997 23:03:02 +0100 e2fsprogs (1.10-7) unstable; urgency=HIGH * Turned "#if (__GLIBC__ == 2)" into "#if 1" to turn around missing llseek() prototype in libc_5.4.33-5 as well as libc6. -- Yann Dirson Tue, 21 Oct 1997 12:53:27 +0200 e2fsprogs (1.10-6) unstable; urgency=low * Official libc6 patches from Ted. * Converted to debstd - let it do the stripping stuff. * Separated libcomerr into a standalone lib - includes full doc and tools. * Separated development files into e2fslibs-dev, which Provides the 4 other -dev packages. * Now Provides the 4 other lib packages, to make it possible not to depend upon e2fsprogs itself. These libs WILL be taken out of "progs" in the next release. -- Yann Dirson Wed, 24 Sep 1997 10:46:00 +0200 e2fsprogs (1.10-5.1) experimental; urgency=low * Applied patch from Ted for libc6 compatibility, for test purpose. -- Yann Dirson Thu, 11 Sep 1997 09:09:42 +0200 e2fsprogs (1.10-5) unstable; urgency=medium * Switched back to libc5 because of possible bug in libc6-2.0.4-provided llseek() causing problem with partitions > 2Gb. * Switched back to libc-provided llseek(). -- Yann Dirson Tue, 5 Aug 1997 16:54:40 +0200 e2fsprogs (1.10-4.1) unstable; urgency=low * Make use of shipped llseek instead of glibc's which seems buggy [unreleased - could not compile due to possible gcc bug]. * Corrected compiler-options handling in debian/rules (use CCOPTS instead of CFLAGS which is messed with in configure.in). -- Yann Dirson Mon, 28 Jul 1997 19:47:02 +0200 e2fsprogs (1.10-4) unstable; urgency=low * Switched to libc6. * Added calls to update-info in postins/prerm. * Misc changes to debian/rules; some cleanup in Makefiles. -- Yann Dirson Thu, 10 Jul 1997 19:42:54 +0200 e2fsprogs (1.10-3) stable unstable; urgency=low * New maintainer (closed many obsolete bug-reports). * updated "copyright" to show new location on tsx-11. * started debian/rules cleanup, towards new policy conformance. * Added flushb.8 link to undocumented.7 (bug #8644). * Added {fsck,mkfs}.ext2.8 links to existing manpages (bugs #5598, #6286). -- Yann Dirson Wed, 25 Jun 1997 14:59:58 +0200 e2fsprogs (1.10-2) frozen unstable; urgency=low * Add 'ldconfig' to postinst (should fix #9020). * Define HAVE_NETINET_IN_H on alpha/glibc. -- Klee Dienes Tue, 29 Apr 1997 17:24:12 -0400 e2fsprogs (1.10-1) frozen unstable; urgency=medium * Upstream bug-fix release. -- Klee Dienes Thu, 24 Apr 1997 14:54:12 -0400 e2fsprogs (1.09-1) frozen; urgency=medium * Upstream bug-fix release. -- Klee Dienes Thu, 24 Apr 1997 14:54:12 -0400 e2fsprogs (1.06-4) unstable; urgency=low * Added empty entries to shlibs.local, to neatly solve the pre-depends problem, as suggested by Ian Jackson. -- Michael Nonweiler Wed, 13 Nov 1996 08:13:28 +0000 e2fsprogs (1.06-3) unstable; urgency=low * Hard coded Pre-Depends line, as a temporary fix for the pre-depends contains e2fsprogs problem. -- Michael Nonweiler Sat, 9 Nov 1996 12:57:44 +0000 e2fsprogs (1.06-2) unstable; urgency=low * New packaging format * Fixes packaging bugs - Files in /lib are now stripped of all unneeded symbols (Bug#5121) Calls to ldconfig in maintainer scripts have been removed (Bug#4247) -- Michael Nonweiler Tue, 5 Nov 1996 21:14:54 +0000 e2fsprogs (1.01-1) unstable; urgency=low * upgraded to latest upstream version, to 1.06 from 1.05 * upgraded to latest upstream version, to 1.05 from 1.04 * gzip manpages * minor changes to debian.rules -- Michael Meskes Fri, 18 Oct 1996 00:00:00 +0000 e2fsprogs (1.04-1) unstable; urgency=low * upgraded to latest upstream version, to 1.04 from 1.02 * another tidy-up of debian.rules * section and priority added to debian.control, since this is an essential base package. -- Michael Nonweiler Sun, 23 Jun 1996 00:00:00 +0000 e2fsprogs (1.02-1) unstable; urgency=low * upgraded to latest upstream version, to 1.02 from 1.01 * copied "configure" usr_prefix change (see below), into configure.in * updated debian.control file, added Pre-Depends field created preinst script to check dpkg --assert-predepends tidied and fixed debian.rules * set e2fsck to link shared, as suggested by Bruce Perens in Bug#2332 * corrected problem in e2fsck error message, Bug#2534 * added Architecture field * very minor correction to expected output of a build time test -- Michael Nonweiler Tue, 5 Mar 1996 00:00:00 +0000 e2fsprogs (1.01-1) unstable; urgency=low * removed debugging symbols from libs and enabled more optimization as suggested by Rolf Rossius * also removed the /var/catman pages * changed to elf compilation -- Andrew D. Fernandes Mon, 20 Nov 1995 00:00:00 +0000 e2fsprogs (0.5b-2) unstable; urgency=low * Upgraded to latest version, to 1.01 from 0.5b. * changed the installation groups from bin to root in MCONFIG.in * changed configure to set usr_prefix="\${prefix}/usr" * moved the cat pages to /var/catman in MCONFIG.in -- Andrew D. Fernandes Sat, 7 Oct 1995 00:00:00 +0000 e2fsprogs (0.5b-1) unstable; urgency=low * Made "fsck -t " work correctly. Formerly the -t argument was overridden by the filesystem type listed for the device in /etc/fstab. * added Debian GNU/Linux package maintenance system files -- Bruce Perens Thu, 3 Aug 1995 00:00:00 +0000 e2fsprogs-1.47.3-rc1/debian/comerr-dev.doc-base000066400000000000000000000006711501560632700211000ustar00rootroot00000000000000Document: comerr-manual Title: The com_err library Author: Ken Raeburn and Bill Sommerfeld Abstract: A library, and associated utilities, which allow a more uniform way for libraries to return errors to their callers, and for programs to describe errors and exceptional conditions to their users. Section: Programming Format: HTML Index: /usr/share/doc/comerr-dev/html-info/com_err.html Files: /usr/share/doc/comerr-dev/html-info/*.html e2fsprogs-1.47.3-rc1/debian/comerr-dev.examples000066400000000000000000000000711501560632700212330ustar00rootroot00000000000000lib/ss/ss_err.et debian/BUILD-STD/lib/ext2fs/ext2_err.et e2fsprogs-1.47.3-rc1/debian/comerr-dev.install000066400000000000000000000003241501560632700210640ustar00rootroot00000000000000usr/lib/*/libcom_err.a usr/lib/*/libcom_err.so usr/include/et/* usr/include/com_err.h usr/share/man/man1/compile_et* usr/share/man/man3/com_err.3* usr/bin/compile_et usr/share/et/* usr/lib/*/pkgconfig/com_err.pc e2fsprogs-1.47.3-rc1/debian/comerr-dev.postinst000066400000000000000000000010751501560632700213050ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/comerr-dev SYMLINK_TARGET=libcomerr2 SYMLINK_TARGET2=libcom-err2 if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ] then if symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" || symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET2" then rm -f "${SYMLINK}.dpkg-backup" fi fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/comerr-dev.postrm000066400000000000000000000014261501560632700207460ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/comerr-dev SYMLINK_TARGET=libcomerr2 SYMLINK_TARGET2=libcom-err2 if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ] then rm -f "${SYMLINK}.dpkg-backup" fi if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ] then if symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" || symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET2" then echo "Restoring backup of $SYMLINK ..." mv "${SYMLINK}.dpkg-backup" "$SYMLINK" fi fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/comerr-dev.preinst000066400000000000000000000011021501560632700210750ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/comerr-dev SYMLINK_TARGET=libcomerr2 SYMLINK_TARGET2=libcom-err2 if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && [ -h "$SYMLINK" ] then if symlink_match "$SYMLINK" "$SYMLINK_TARGET" || symlink_match "$SYMLINK" "$SYMLINK_TARGET2" then mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup" fi fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/control000066400000000000000000000202041501560632700170330ustar00rootroot00000000000000Source: e2fsprogs Section: admin Priority: important Maintainer: Theodore Y. Ts'o Build-Depends: dpkg-dev (>= 1.22.5), gettext, texinfo, pkgconf, libarchive-dev , libfuse3-dev [linux-any kfreebsd-any] , debhelper-compat (= 12), dh-exec, libblkid-dev, uuid-dev, m4, udev [linux-any], systemd [linux-any], systemd-dev [linux-any], cron [linux-any], dh-sequence-movetousr Rules-Requires-Root: no Standards-Version: 4.7.0 Homepage: http://e2fsprogs.sourceforge.net Vcs-Browser: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git Vcs-Git: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git -b debian/master Package: fuse2fs Build-Profiles: Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Breaks: fuseext2 (<< 1.47.1-2~) Replaces: fuseext2 (<< 1.47.1-2~) Architecture: linux-any kfreebsd-any Description: ext2 / ext3 / ext4 file system driver for FUSE fuse2fs is a FUSE file system client that supports reading and writing from devices or image files containing ext2, ext3, and ext4 file systems. Package: fuseext2 Build-Profiles: Depends: fuse2fs (>= 1.47.1-2), ${misc:Depends} Architecture: all Priority: optional Section: oldlibs Description: transitional package This is a transitional package. It can safely be removed. Package: logsave Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: e2fsprogs (<< 1.45.3-1) Breaks: e2fsprogs (<< 1.45.3-1) Architecture: any Multi-Arch: foreign Description: save the output of a command in a log file The logsave program will execute cmd_prog with the specified argument(s), and save a copy of its output to logfile. If the containing directory for logfile does not exist, logsave will accumulate the output in memory until it can be written out. A copy of the output will also be written to standard output. Package: e2fsck-static Build-Profiles: Priority: optional Depends: ${misc:Depends} Recommends: sash | bash-static | zsh-static | busybox-static Architecture: any Description: statically-linked version of the ext2/ext3/ext4 filesystem checker This may be of some help to you if your filesystem gets corrupted enough to break the shared libraries used by the dynamically linked checker. . This binary takes much more space than its dynamic counterpart located in e2fsprogs, though. . You may want to install a statically-linked shell as well, to be able to run this program if something like your C library gets corrupted. Package: e2fsprogs-l10n Section: localization Priority: optional Depends: e2fsprogs (>= ${binary:Version}), e2fsprogs (<< ${binary:Version}+c~), ${misc:Depends} Replaces: e2fsprogs (<< 1.43.5-1) Architecture: all Multi-Arch: foreign Description: ext2/ext3/ext4 file system utilities - translations The ext2, ext3 and ext4 file systems are successors of the original ext ("extended") file system. They are the main file system types used for hard disks on Debian and other Linux systems. . This package provides translations for messages for programs found in the 'e2fsprogs' package. Package: libcom-err2 Section: libs Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: libcom-err2t64, libcomerr2 (<< 1.43.9-1~) Breaks: libcom-err2t64 (<< 1.47.0-2.4~exp1~), libcomerr2 (<< 1.43.9-1~) Provides: libcom-err2t64 (= ${binary:Version}), libcomerr2 (= ${binary:Version}) Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Description: common error description library libcomerr is an attempt to present a common error-handling mechanism to manipulate the most common form of error code in a fashion that does not have the problems identified with mechanisms commonly in use. Package: comerr-dev Section: libdevel Priority: optional Depends: libc6-dev | libc-dev, libcom-err2 (= ${mainBinary}), ${misc:Depends} Suggests: doc-base Replaces: e2fslibs-dev (<< 1.33-2), libkrb5-dev (<< 1.3) Architecture: any Multi-Arch: same Description: common error description library - headers and static libraries libcom_err is an attempt to present a common error-handling mechanism to manipulate the most common form of error code in a fashion that does not have the problems identified with mechanisms commonly in use. . This package contains the development environment for the com_err library. Package: libss2 Provides: libss2t64 (= ${binary:Version}) Breaks: libss2t64 (<< 1.47.0-2.4~exp1~) Section: libs Priority: optional Depends: libcom-err2, ${shlibs:Depends}, ${misc:Depends} Replaces: libss2t64, e2fsprogs (<< 1.34-1) Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Description: command-line interface parsing library libss provides a simple command-line interface parser which will accept input from the user, parse the command into an argv argument vector, and then dispatch it to a handler function. . It was originally inspired by the Multics SubSystem library. Package: ss-dev Section: libdevel Priority: optional Depends: libc6-dev | libc-dev, libss2 (= ${mainBinary}), comerr-dev, ${misc:Depends} Architecture: any Multi-Arch: same Description: command-line interface parsing library - headers and static libraries This package includes a tool that parses a command table to generate a simple command-line interface parser, the include files needed to compile and use it, and the static libs. . It was originally inspired by the Multics SubSystem library. . This package contains the development environment for the ss library. Package: e2fsprogs-udeb Build-Profiles: Package-Type: udeb Section: debian-installer Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Architecture: any Description: stripped-down versions of e2fsprogs, for debian-installer This package is an e2fsprogs package built for a reduced size, so that it can help to save space in debian-installer. . Don't attempt to install this package, it has no support for a couple of features you surely want. Anyway it should refuse to install. Package: libext2fs2t64 Section: libs Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: libext2fs2, e2fslibs (<< 1.43.9-1~) Breaks: libext2fs2 (<< ${source:Version}), e2fslibs (<< 1.43.9-1~) Provides: ${t64:Provides}, e2fslibs (= ${binary:Version}) Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Description: ext2/ext3/ext4 file system libraries The ext2, ext3 and ext4 file systems are successors of the original ext ("extended") file system. They are the main file system types used for hard disks on Debian and other Linux systems. . This package provides the ext2fs and e2p libraries, for userspace software that directly accesses extended file systems. Programs that use libext2fs include e2fsck, mke2fs, and tune2fs. Programs that use libe2p include dumpe2fs, chattr, and lsattr. Package: libext2fs-dev Section: libdevel Priority: optional Depends: libc6-dev | libc-dev, comerr-dev, libext2fs2t64 (= ${binary:Version}), ${misc:Depends} Replaces: e2fslibs-dev (<< 1.43.9-1~) Breaks: e2fslibs-dev (<< 1.43.9-1~) Provides: e2fslibs-dev (= ${binary:Version}) Suggests: doc-base Architecture: any Description: ext2/ext3/ext4 file system libraries - headers and static libraries The ext2, ext3 and ext4 file systems are successors of the original ext ("extended") file system. They are the main file system types used for hard disks on Debian and other Linux systems. . This package contains the development environment for the ext2fs and e2p libraries. Package: e2fsprogs XB-Important: yes Pre-Depends: ${shlibs:Depends}, ${misc:Depends}, libblkid1, libuuid1 Depends: logsave Multi-Arch: foreign Suggests: gpart, parted, fuse2fs, e2fsck-static, libarchive13t64 Recommends: e2fsprogs-l10n Architecture: any Description: ext2/ext3/ext4 file system utilities The ext2, ext3 and ext4 file systems are successors of the original ext ("extended") file system. They are the main file system types used for hard disks on Debian and other Linux systems. . This package contains programs for creating, checking, and maintaining ext2/3/4-based file systems. It also includes the "badblocks" program, which can be used to scan for bad blocks on a disk or other storage device. e2fsprogs-1.47.3-rc1/debian/copyright000066400000000000000000000503371501560632700173750ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: e2fsprogs Upstream-Contact: Theodore Ts'o Source: http://sourceforge.net/projects/e2fsprogs Comment: This is the Debian GNU/Linux prepackaged version of the EXT2 file system utilities (e2fsck, mke2fs, etc.). The EXT2 utilities were written by Theodore Ts'o and Remy Card . Files: * Copyright: 1993-2022 Theodore Ts'o License: GPL-2 Comment: Some files are GPL-2+ licensed or do not carry any license version. They are distributable as GPL-2 and listed as such for simplification. Files: debian/* Copyright: 2003-2007 Theodore Ts'o 1997-2003 Yann Dirson 2001 Alcove 1997 Klee Dienes 1995-1996 Michael Nonweiler License: GPL-2 Files: debian/fuse-ext2 Copyright: 2008-2010 Alper Akcan 2009-2010 Renzo Davoli License: GPL-2+ Files: debian/fuse-ext2.1 Copyright: 2024 наб License: 0BSD Files: lib/et/* lib/ss/* Copyright: 1987-1988 MIT Student Information Processing Board 2003 Theodore Ts'o License: Expat Permission to use, copy, modify, and distribute this software and its documentation for any purpose is hereby granted, provided that the names of M.I.T. and the M.I.T. S.I.P.B. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. and the M.I.T. S.I.P.B. make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. Files: lib/et/vfprintf.c Copyright: 1988 Regents of the University of California License: BSD-3-Clause-Variant Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. Files: lib/et/com_right.c Comment: Taken from lib/com_err/error.c from Kerberos4kth distribution. Copyright: (c) 2003 by Theodore Ts'o Copyright (c) 1997, 1998, 2001 Kungliga Tekniska Högskolan (Royal Institute of Technology, Stockholm, Sweden). All rights reserved. License: BSD-3-Clause Files: lib/et/test_cases/imap_err.et Copyright: 1994-2008 Carnegie Mellon University. License: BSD-4-Clause-CMU Files: lib/ext2fs/* lib/e2p/* lib/support/print_fs_flags.c misc/e2fuzz.c Copyright: 1995-1999, 2002, 2004-2006 Theodore Ts'o 1992-1994 Remy Card Laboratoire MASI, Institut Blaise Pascal Universite Pierre et Marie Curie (Paris VI) 2001 Andreas Gruenbacher, 2007 IBM Corporation 2010 Red Hat, Inc., Lukas Czerner 2014 Oracle 2012 Zheng Liu 2012 Intel Corporation 2001 Daniel Phillips 2002 Theodore Ts'o. 2002 Andreas Dilger 2006 Cluster File Systems, Inc. 2006, 2007 by Andreas Dilger 2003,2004 Cluster File Systems, Inc 1995 Theodore Ts'o. 2003 VMware, Inc. 2015 Jan Kara 2018 Collabora Ltd. 1997 Theodore Ts'o 1997 Mark Habersack 2011 Whamcloud, Inc. 2004 Sam Hocevar 2014 Google Inc. 1993, 1994, 1995 Theodore Ts'o. 1998 Andrey Shedel License: LGPL-2 Comment: Some files in lib/ext2fs claim "This file may be redistributed under the terms of the GNU Public License." and NOTICE clarifies them to be licensed under LGPL-2. Files: lib/ext2fs/tdb* Copyright: 1999-2005 Andrew Tridgell 2000-2006 Jeremy Allison 2000 Paul `Rusty' Russell License: LGPL-2 Files: lib/ext2fs/tdbtool.c Copyright: 1999-2000 Andrew Tridgell 2000 Paul `Rusty' Russell 2000 Jeremy Allison 2001 Andrew Esh License: GPL-2 Files: lib/ext2fs/kernel-jbd.h Copyright: 1998-2000 Red Hat, Inc License: GPL-2 Files: lib/ext2fs/nls_utf8.c lib/ext2fs/utf8n.h util/mkutf8data.c Copyright: 2014 SGI 2018 Collabora Ltd. License: GPL-2 Files: lib/ext2fs/crc16.* Copyright: 2005 Ben Gardner License: GPL-2 Files: lib/ext2fs/crc32c* Copyright: August 26, 2011 Darrick J. Wong Reuse Bob Pearson's slice-by-8 implementation for e2fsprogs. . July 20, 2011 Bob Pearson ... Oct 15, 2000 Matt Domsch ... Oct 12, 2000 Matt Domsch License: GPL-2 Files: lib/uuid/* Copyright: 1996-1999, 2007 Theodore Ts'o. License: BSD-3-Clause Files: lib/uuid/*.3.in Copyright: 1999 Andreas Dilger License: BSD-3-Clause Files: contrib/fallocate.c Copyright: 2008 Red Hat, Inc. All rights reserved. 2003-2005 Silicon Graphics, Inc. License: GPL-2 Files: contrib/dconf Copyright: 1994 Ulrich Windl License: GPL-2 Files: CleanSpec.mk contrib/android/ext2simg.c Copyright: 2007, 2016 The Android Open Source Project License: Apache-2 Files: e2fsck/* debugfs/do_journal.c debugfs/journal.* debugfs/logdump.c debugfs/xattrs.c lib/support/plausible.c misc/fuse2fs.c misc/fsmap.h Copyright: 1993-2011 Theodore Ts'o 1999-2000 Red Hat Software 2000 Red Hat corp 2001 Red Hat, Inc. 2000 Stephen C. Tweedie 2000 Andreas Dilger 2014 Oracle 2019 Google LLC License: GPL-2 Files: e2fsck/mtrace.* include/nonunix/getopt.h Copyright: 1985-2015 Free Software Foundation, Inc. License: LGPL-2 Files: ext2ed/* Copyright: 1995 Gadi Oxman License: GPL-2 Files: include/mingw/unistd.h Copyright: 2004-2006 Kern Sibbald 2014 Adam Kropelin License: GPL-2 Files: lib/support/devname.* Copyright: 2010 Red Hat, Inc., Lukas Czerner License: GPL-2 Files: lib/blkid/* misc/blkid.c Copyright: 1999, 2001 by Andries Brouwer 1994-1997, 1999-2004 Theodore Ts'o 2001 Andreas Dilger License: LGPL-2 Files: misc/blkid.8.in misc/uuidgen.1.in Copyright: 1999, 2000 Andreas Dilger License: GPL-2 Files: misc/create_inode.c Copyright: 2014 Robert Yang License: LGPL-2 Files: misc/e2freefrag.c Copyright: 2009 Sun Microsystems, Inc. License: GPL-2 Files: misc/e2undo.c Copyright: 2007 IBM Corporation License: GPL-2 Files: misc/e4defrag.c Copyright: Akira Fujita Takashi Sato License: GPL-2 Files: misc/uuidgen.c Copyright: 1999 Andreas Dilger and Theodore Ts'o License: GPL-2 Files: misc/e2fuzz.sh Copyright: 2014 Oracle License: GPL-2 Files: misc/e4crypt.c Copyright: 2014 Google, Inc. License: GPL-2 Files: ext2ed/ext2.descriptors misc/badblocks.c misc/chattr.c misc/dumpe2fs.c misc/lsattr.c misc/mklost+found.c misc/tune2fs.c Copyright: 1995-1999 by Theodore Ts'o 1992-1994 Remy Card Laboratoire MASI, Institut Blaise Pascal Universite Pierre et Marie Curie (Paris VI) 1999 by David Beattie Linus Torvalds License: GPL-2 Files: po/fr.po po/vi.po Copyright: 2008, 2014 Theodore Ts'o 1996, 2014 Free Software Foundation, Inc. License: GPL-2 Files: resize/* Copyright: 1997-2000 by Theodore Ts'o and PowerQuest, Inc. License: GPL-2 Files: scrub/* Copyright: 2018 Oracle License: GPL-2 Files: tests/fuzz/*.cc Copyright: 2020 Google LLC License: Apache-2 Files: lib/support/argv_parse.* Copyright: 1999 Theodore Ts'o. License: ISC Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THEODORE TS'O (THE AUTHOR) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Files: lib/support/profile.* Copyright: 2005, 2006 by Theodore Ts'o. 1985-2005 by the Massachusetts Institute of Technology. All rights reserved. License: GPL or MIT-US-export This file may be redistributed under the terms of the GNU Public License. . Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person or organization contemplating export to obtain such a license before exporting. . WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, 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. Furthermore if you modify this software you must label your software as modified software and not distribute it in such a fashion that it might be confused with the original MIT software. 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. . THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. Comment: On Debian systems, the complete text of the GNU General Public License can be found in "/usr/share/common-licenses/GPL". Files: lib/support/dict.* Copyright: 1997 Kaz Kylheku License: Kazlib All rights are reserved by the author, with the following exceptions: Permission is granted to freely reproduce and distribute this software, possibly in exchange for a fee, provided that this copyright notice appears intact. Permission is also granted to adapt this software to produce derivative works, as long as the modified versions carry this copyright notice and additional notices stating that the work has been modified. This source code may be translated into executable form and incorporated into proprietary software; there is no requirement for such software to contain a copyright notice related to this source. Comment: The work has been modified. Files: doc/libext2fs.texinfo Copyright: 1997-2014 Theodore Ts'o License: Latex2e Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). . Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. . Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the author. Files: doc/texinfo.tex lib/et/texinfo.tex Copyright: 1985-2006 Free Software Foundation, Inc. License: GPL-2+ with Texinfo exception This texinfo.tex 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, or (at your option) any later version. . This texinfo.tex file 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 texinfo.tex file; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. . As a special exception, when this file is read by TeX when processing a Texinfo source document, you may use the result without restriction. (This has been our intent since Texinfo was invented.) License: Apache-2 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Comment: On Debian systems, the complete text of the Apache License, Version 2.0 can be found in "/usr/share/common-licenses/Apache-2.0". License: BSD-3-Clause 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, and the entire permission notice in its entirety, including the disclaimer of warranties. 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. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 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 NOT ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD-4-Clause-CMU 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. The name "Carnegie Mellon University" must not be used to endorse or promote products derived from this software without prior written permission. For permission or any legal details, please contact Carnegie Mellon University Center for Technology Transfer and Enterprise Creation 4615 Forbes Avenue Suite 302 Pittsburgh, PA 15213 (412) 268-7393, fax: (412) 268-7395 innovation@andrew.cmu.edu . 4. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by Computing Services at Carnegie Mellon University (http://www.cmu.edu/computing/)." . CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. License: GPL-2 This program is free software; you can redistribute it and/or modify it under the terms version 2 of the GNU General Public License as published by the Free Software Foundation. . 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, see . Comment: On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". License: GPL-2+ This program 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 (in the main directory of the fuse-ext2 distribution in the file COPYING); if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Comment: On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". License: 0BSD Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. . THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. License: LGPL-2 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; version 2 of the License. . This library 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 Library General Public License for more details. . You should have received a copy of the GNU Library General Public License along with this library. If not, see . Comment: On Debian systems, the complete text of the GNU Library General Public License version 2 can be found in "/usr/share/common-licenses/LGPL-2". e2fsprogs-1.47.3-rc1/debian/e2fsck-static.install000066400000000000000000000000671501560632700214670ustar00rootroot00000000000000/sbin/e2fsck.static /usr/share/man/man8/e2fsck.static* e2fsprogs-1.47.3-rc1/debian/e2fsck-static.preinst000066400000000000000000000004221501560632700215000ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e PKG=e2fsck-static DOCLNK=/usr/share/doc/$PKG if test "$1" = upgrade \ -a -L $DOCLNK then rm $DOCLNK fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/e2fsprogs-l10n.install000066400000000000000000000000211501560632700214750ustar00rootroot00000000000000usr/share/locale e2fsprogs-1.47.3-rc1/debian/e2fsprogs-udeb.install000066400000000000000000000002371501560632700216530ustar00rootroot00000000000000etc/mke2fs.conf lib/*/lib*.so.* sbin/badblocks sbin/e2fsck sbin/mke2fs sbin/resize2fs sbin/tune2fs sbin/e2label sbin/e2mmpstatus sbin/fsck.ext? sbin/mkfs.ext? e2fsprogs-1.47.3-rc1/debian/e2fsprogs-udeb.lintian-overrides000066400000000000000000000001361501560632700236410ustar00rootroot00000000000000e2fsprogs-udeb udeb: package-name-doesnt-match-sonames libcom-err2 libe2p2 libext2fs2 libss2 e2fsprogs-1.47.3-rc1/debian/e2fsprogs-udeb.shlibs.local000066400000000000000000000003141501560632700225560ustar00rootroot00000000000000libblkid 1 libblkid1-udeb # force the dependency to libblkid1-udeb, even if it don't include the lib libcom_err 2 libblkid1-udeb libuuid 1 libuuid1-udeb libext2fs 2 libblkid1-udeb libe2p 2 libblkid1-udeb e2fsprogs-1.47.3-rc1/debian/e2fsprogs.docs000066400000000000000000000000071501560632700202130ustar00rootroot00000000000000README e2fsprogs-1.47.3-rc1/debian/e2fsprogs.install000077500000000000000000000025461501560632700207460ustar00rootroot00000000000000#!/usr/bin/dh-exec sbin/badblocks sbin/debugfs sbin/dumpe2fs sbin/e2fsck sbin/e2image sbin/e2label sbin/e2mmpstatus [linux-any] sbin/e2scrub [linux-any] sbin/e2scrub_all sbin/e2undo sbin/fsck.ext? sbin/mke2fs sbin/mkfs.ext? sbin/resize2fs sbin/tune2fs usr/bin/chattr usr/bin/lsattr [linux-any] usr/libexec/e2fsprogs/e2scrub_all_cron [linux-any] usr/libexec/e2fsprogs/e2scrub_fail usr/sbin/e2freefrag [linux-any] usr/sbin/e4crypt [linux-any] usr/sbin/e4defrag usr/sbin/filefrag usr/sbin/mklost+found usr/share/man/man1/chattr.1 usr/share/man/man1/lsattr.1 usr/share/man/man5/e2fsck.conf.5 usr/share/man/man5/ext?.5 usr/share/man/man5/mke2fs.conf.5 usr/share/man/man8/badblocks.8 usr/share/man/man8/debugfs.8 usr/share/man/man8/dumpe2fs.8 usr/share/man/man8/e2freefrag.8 usr/share/man/man8/e2fsck.8 usr/share/man/man8/e2image.8 usr/share/man/man8/e2label.8 usr/share/man/man8/e2mmpstatus.8 [linux-any] usr/share/man/man8/e2scrub.8 [linux-any] usr/share/man/man8/e2scrub_all.8 usr/share/man/man8/e2undo.8 [linux-any] usr/share/man/man8/e4crypt.8 [linux-any] usr/share/man/man8/e4defrag.8 usr/share/man/man8/filefrag.8 usr/share/man/man8/fsck.ext?.8 usr/share/man/man8/mke2fs.8 usr/share/man/man8/mkfs.ext?.8 usr/share/man/man8/mklost+found.8 usr/share/man/man8/resize2fs.8 usr/share/man/man8/tune2fs.8 etc [linux-any] ${deb_udevudevdir}/rules.d [linux-any] ${deb_systemdsystemunitdir} e2fsprogs-1.47.3-rc1/debian/e2fsprogs.postinst000066400000000000000000000002551501560632700211530ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e if [ -x /usr/sbin/update-initramfs -a \ -e /etc/initramfs-tools/initramfs.conf ]; then update-initramfs -u fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/e2fsprogs.postinst.dh9000066400000000000000000000012771501560632700216430ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e if [ -x /usr/sbin/update-initramfs -a \ -e /etc/initramfs-tools/initramfs.conf ]; then update-initramfs -u fi #DEBHELPER# # debhelper doesn't know what timers are... update_svc() { deb-systemd-helper unmask "$1" >/dev/null || true if deb-systemd-helper --quiet was-enabled "$1"; then deb-systemd-helper enable "$1" >/dev/null || true else deb-systemd-helper update-state "$1" >/dev/null || true fi } update_svc e2scrub_all.timer update_svc e2scrub_reap.service # Start our new services if [ -d /run/systemd/system ]; then systemctl --system daemon-reload >/dev/null || true deb-systemd-invoke start e2scrub_all.timer >/dev/null || true fi exit 0 e2fsprogs-1.47.3-rc1/debian/e2fsprogs.postrm.dh9000066400000000000000000000013511501560632700212750ustar00rootroot00000000000000#!/bin/sh update_svc() { deb-systemd-helper mask "$1" >/dev/null || true if deb-systemd-helper --quiet was-enabled "$1"; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper disable "$1" >/dev/null || true fi } if [ "$1" != "upgrade" ]; then # Abort on error. set -e if [ -x /usr/sbin/update-initramfs -a \ -e /etc/initramfs-tools/initramfs.conf ]; then update-initramfs -u fi #DEBHELPER# # debhelper doesn't know what timers are... update_svc e2scrub_all.timer update_svc e2scrub_reap.service # Start our new services if [ -d /run/systemd/system ]; then deb-systemd-invoke stop e2scrub_all.timer >/dev/null || true fi fi exit 0 e2fsprogs-1.47.3-rc1/debian/e2fsprogs.preinst000066400000000000000000000004161501560632700207530ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e PKG=e2fsprogs DOCLNK=/usr/share/doc/$PKG if test "$1" = upgrade \ -a -L $DOCLNK then rm $DOCLNK fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/e2fsprogs.shlibs.local000066400000000000000000000001351501560632700216420ustar00rootroot00000000000000libext2fs 2 libext2fs2t64 (= ${binary:Version}) libe2p 2 libext2fs2t64 (= ${binary:Version}) e2fsprogs-1.47.3-rc1/debian/fuse-ext2000077500000000000000000000030651501560632700172060ustar00rootroot00000000000000#!/bin/sh usage() { printf 'usage: %s [-hv] [-o ro|force|allow_others[,...]]... device|image mountpoint\n\nUse fuse2fs instead.\n' "${0##*/}" exit 9 } args="$(getopt -o 'hvo:' --long 'help,verbose,options:' -n "${0##*/}" -s 'sh' -- "$@")" || exit eval set -- "$args" original_options= readonly= force= while :; do case "$1" in -o|--options) original_options="$original_options,$2" shift 2 ;; -h|--help) usage shift ;; -v|--verbose) shift ;; --) shift break ;; esac done [ $# -eq 2 ] || usage device="$1" mountpoint="$2" # let fuse2fs check $device options= while [ -n "${original_options#,}" ]; do original_options="${original_options#,}" full="${original_options%%,*}" original_options="${original_options#*,}," case "${full%%=*}" in "ro" ) readonly=y ;; # Read-only mount. "rw" ) readonly= ;; # Read-write mount "rw+" ) readonly=; force=y ;; # Read-write mount "silent") ;; # keep silent "force" ) force=y ;; # enable read/write * ) options="$options,$full"; continue ;; esac [ "$full" = "${full%=*}" ] || { printf '%s: %s: value given but not allowed\n' "${0##*/}" "$full" >&2 exit 254 } done [ -z "$readonly" ] && [ -z "$force" ] && { printf '%s: Mounting %s Read-Only. Use '\''force'\'' or '\''rw+'\'' options to enable Read-Write mode\n' "${0##*/}" "$device" >&2 readonly=y } [ -n "$readonly" ] && options="$options,ro" || options="$options,rw" exec /usr/bin/fuse2fs "$device" "$mountpoint" -o "${options#,}" e2fsprogs-1.47.3-rc1/debian/fuse-ext2.1000066400000000000000000000021061501560632700173350ustar00rootroot00000000000000.\" SPDX-License-Identifier: 0BSD .\" .Dd October 24, 2024 .Dt FUSE-EXT2 1 .Os fuse2fs . .Sh NAME .Nm fuse-ext2 .Nd fuse2fs compatibility wrapper .Sh SYNOPSIS .Nm .Op Fl hv .Oo Fl o Cm ro Ns \&| Ns Cm force Ns \&| Ns Cm allow_others Ns Oo ,… Oc Oc Ns … .Ar device Ns \&| Ns Ar image .Ar mountpoint . .Sh DESCRIPTION This wrapper provides the .Nm interface via .Xr fuse2fs 1 , which you should migrate to instead. . .Sh OPTIONS .Bl -tag -compact -width ".Fl o , -options Ar option Ns Op ,…" .It Fl h , -help Show usage string. . .It Fl v , -verbose Ignored. . .It Fl o , -options Ar option Ns Op ,… .Xr mount.fuse3 8 options, of which these are handled specially: .Bl -tag -compact -offset 4n -width ".Cm silent" .It Cm ro Mount read-only. . .It Cm rw Mount read-write .Em if .Cm force also given. This is the default. . .It Cm rw+ Same as .Fl o Cm rw , Ns Cm force .It Cm silent Ignored. .It Cm force If .Cm rw , mount read-write. .El all other .Ar option Ns s are forwarded to .Nm fuse2fs directly. .Pp If .Cm rw but not .Cm force , the mount is read-only and a warning is issued. .El e2fsprogs-1.47.3-rc1/debian/fuse2fs.install000066400000000000000000000001651501560632700204010ustar00rootroot00000000000000/usr/bin/fuse2fs /usr/share/man/man1/fuse2fs.1 debian/fuse-ext2 /usr/bin/ debian/fuse-ext2.1 /usr/share/man/man1/ e2fsprogs-1.47.3-rc1/debian/fuse2fs.links000066400000000000000000000005601501560632700200520ustar00rootroot00000000000000/usr/bin/fuse-ext2 /usr/bin/fuseext2 /usr/bin/fuse-ext2 /usr/sbin/mount.fuse-ext2 /usr/sbin/mount.fuse-ext2 /usr/sbin/mount.fuseext2 /usr/share/man/man1/fuse-ext2.1 /usr/share/man/man1/fuseext2.1 /usr/share/man/man1/fuse-ext2.1 /usr/share/man/man8/mount.fuse-ext2.8 /usr/share/man/man8/mount.fuse-ext2.8 /usr/share/man/man8/mount.fuseext2.8 e2fsprogs-1.47.3-rc1/debian/fuse2fs.postinst000066400000000000000000000005771501560632700206250ustar00rootroot00000000000000#!/bin/sh set -e # begin-remove-after: released:trixie if test "$1" = configure && dpkg --compare-versions "$2" lt 1.47.2~rc1-1~; then # DEP17 P1 mitigation. for cmd in /sbin/mount.fuse-ext2 /sbin/mount.fuseext2; do dpkg-divert --package fuse2fs --no-rename --divert "$cmd.usr-is-merged" --remove "$cmd" done fi # end-remove-after: released:trixie #DEBHELPER# e2fsprogs-1.47.3-rc1/debian/fuse2fs.postrm000066400000000000000000000007351501560632700202620ustar00rootroot00000000000000#!/bin/sh set -e # begin-remove-after: released:trixie if test "$1" = remove || test "$1" = upgrade -o "$1" = failed-upgrade - o "$1" = abort-install -o "$1" = abort-upgrade && dpkg --compare-versions "$2" lt 1.47.2~rc1-1~; then # DEP17 P1 mitigation. for cmd in /sbin/mount.fuse-ext2 /sbin/mount.fuseext2; do dpkg-divert --package fuse2fs --no-rename --divert "$cmd.usr-is-merged" --remove "$cmd" done fi # end-remove-after: released:trixie #DEBHELPER# e2fsprogs-1.47.3-rc1/debian/fuse2fs.preinst000066400000000000000000000006141501560632700204160ustar00rootroot00000000000000#!/bin/sh set -e # begin-remove-after: released:trixie if test "$1" = install -o "$1" = upgrade && dpkg --compare-versions "$2" lt 1.47.2~rc1-1~; then # DEP17 P1 mitigation. for cmd in /sbin/mount.fuse-ext2 /sbin/mount.fuseext2; do dpkg-divert --package fuse2fs --no-rename --divert "$cmd.usr-is-merged" --add "$cmd" done fi # end-remove-after: released:trixie #DEBHELPER# e2fsprogs-1.47.3-rc1/debian/gbp.conf000066400000000000000000000001261501560632700170500ustar00rootroot00000000000000[DEFAULT] pristine-tar = True upstream-tag='v%(version)s' debian-branch=debian/master e2fsprogs-1.47.3-rc1/debian/libblkid-dev.install000066400000000000000000000001461501560632700213530ustar00rootroot00000000000000usr/lib/*/libblkid*.so.* usr/include/blkid usr/share/man/man3/libblkid.3 usr/lib/*/pkgconfig/blkid.pc e2fsprogs-1.47.3-rc1/debian/libblkid1.install000066400000000000000000000000251501560632700206540ustar00rootroot00000000000000lib/*/libblkid*.so.* e2fsprogs-1.47.3-rc1/debian/libblkid1.symbols000066400000000000000000000023411501560632700207010ustar00rootroot00000000000000libblkid.so.1 libblkid1 #MINVER# blkid__scan_dir@Base 1.41.1 blkid_debug_mask@Base 1.33 blkid_dev_devname@Base 1.33 blkid_dev_has_tag@Base 1.38 blkid_dev_iterate_begin@Base 1.33 blkid_dev_iterate_end@Base 1.33 blkid_dev_next@Base 1.33 blkid_dev_set_search@Base 1.38 #MISSING: 1.41.1# blkid_devdirs@Base 1.34 blkid_devno_to_devname@Base 1.33 blkid_find_dev_with_tag@Base 1.33 blkid_find_tag_dev@Base 1.33 blkid_flush_cache@Base 1.33 blkid_free_dev@Base 1.33 blkid_free_tag@Base 1.33 blkid_gc_cache@Base 1.40 blkid_get_cache@Base 1.33 blkid_get_dev@Base 1.33 blkid_get_dev_size@Base 1.33 blkid_get_devname@Base 1.33 blkid_get_library_version@Base 1.37 blkid_get_tag_value@Base 1.33 blkid_known_fstype@Base 1.34 blkid_llseek@Base 1.33 blkid_new_dev@Base 1.33 blkid_parse_tag_string@Base 1.33 blkid_parse_version_string@Base 1.37 blkid_probe_all@Base 1.33 blkid_probe_all_new@Base 1.38 blkid_put_cache@Base 1.33 blkid_read_cache@Base 1.33 blkid_set_tag@Base 1.33 blkid_strdup@Base 1.33 blkid_strndup@Base 1.33 blkid_tag_iterate_begin@Base 1.33 blkid_tag_iterate_end@Base 1.33 blkid_tag_next@Base 1.33 blkid_verify@Base 1.37 #MISSING: 1.40.7# check_for_modules@Base 1.40.6 #MISSING: 1.40.7# fs_proc_check@Base 1.40.6 e2fsprogs-1.47.3-rc1/debian/libcom-err2.install000066400000000000000000000000271501560632700211360ustar00rootroot00000000000000lib/*/libcom_err*.so.* e2fsprogs-1.47.3-rc1/debian/libcom-err2.symbols000066400000000000000000000012011501560632700211530ustar00rootroot00000000000000libcom_err.so.2 libcom-err2 #MINVER# * Build-Depends-Package: comerr-dev _et_dynamic_list@Base 1.43.9 _et_list@Base 1.43.9 add_error_table@Base 1.43.9 add_to_error_table@Base 1.43.9 com_err@Base 1.43.9 com_err_hook@Base 1.43.9 com_err_va@Base 1.43.9 com_right@Base 1.43.9 com_right_r@Base 1.43.9 error_message@Base 1.43.9 error_table_name@Base 1.43.9 et_list_lock@Base 1.43.9 et_list_unlock@Base 1.43.9 free_error_table@Base 1.43.9 init_error_table@Base 1.43.9 initialize_error_table_r@Base 1.43.9 remove_error_table@Base 1.43.9 reset_com_err_hook@Base 1.43.9 set_com_err_gettext@Base 1.43.9 set_com_err_hook@Base 1.43.9 e2fsprogs-1.47.3-rc1/debian/libext2fs-dev.doc-base000066400000000000000000000004751501560632700215150ustar00rootroot00000000000000Document: libext2fs Title: The EXT2FS library Author: Theodore Ts'o Abstract: The EXT2FS library is designed to allow user-level programs to manipulate an ext2 filesystem. Section: Programming Format: HTML Index: /usr/share/doc/libext2fs2/html-info/libext2fs.html Files: /usr/share/doc/libext2fs2/html-info/*.html e2fsprogs-1.47.3-rc1/debian/libext2fs-dev.install000066400000000000000000000003231501560632700214760ustar00rootroot00000000000000usr/lib/*/libext2fs*.so usr/lib/*/libext2fs*.a usr/lib/*/libe2p*.so usr/lib/*/libe2p*.a usr/include/ext2fs usr/include/e2p usr/share/info/libext2fs.info* usr/lib/*/pkgconfig/e2p.pc usr/lib/*/pkgconfig/ext2fs.pc e2fsprogs-1.47.3-rc1/debian/libext2fs2t64.install000066400000000000000000000000511501560632700213400ustar00rootroot00000000000000lib/*/libext2fs*.so.* lib/*/libe2p*.so.* e2fsprogs-1.47.3-rc1/debian/libext2fs2t64.lintian-overrides000066400000000000000000000001041501560632700233270ustar00rootroot00000000000000libext2fs2t64: package-name-doesnt-match-sonames libe2p2 libext2fs2 e2fsprogs-1.47.3-rc1/debian/libext2fs2t64.postrm000066400000000000000000000005731501560632700212270ustar00rootroot00000000000000#!/bin/sh set -e if test "$1" = remove; then # DEP17 P1 mitigation. Remove these diversions via postinst once trixie is released. for lib in e2p.so.2 e2p.so.2.3 ext2fs.so.2 ext2fs.so.2.4; do dpkg-divert --package libext2fs2t64 --no-rename --divert "/lib/#DEB_HOST_MULTIARCH#/lib$lib.usr-is-merged" --remove "/lib/#DEB_HOST_MULTIARCH#/lib$lib" done fi #DEBHELPER# e2fsprogs-1.47.3-rc1/debian/libext2fs2t64.preinst000066400000000000000000000006131501560632700213620ustar00rootroot00000000000000#!/bin/sh set -e if test "$1" = install -o "$1" = upgrade; then # DEP17 P1 mitigation. Remove these diversions via postinst once trixie is released. for lib in e2p.so.2 e2p.so.2.3 ext2fs.so.2 ext2fs.so.2.4; do dpkg-divert --package libext2fs2t64 --no-rename --divert "/lib/#DEB_HOST_MULTIARCH#/lib$lib.usr-is-merged" --add "/lib/#DEB_HOST_MULTIARCH#/lib$lib" done fi #DEBHELPER# e2fsprogs-1.47.3-rc1/debian/libext2fs2t64.symbols000066400000000000000000000607171501560632700214010ustar00rootroot00000000000000libe2p.so.2 libext2fs2t64 #MINVER# * Build-Depends-Package: libext2fs-dev e2p_edit_feature2@Base 1.40.7 e2p_edit_feature@Base 1.37 e2p_edit_mntopts@Base 1.37 e2p_encmode2string@Base 1.43 e2p_encoding2str@Base 1.45.1 e2p_errcode2str@Base 1.46.0 e2p_feature2string@Base 1.37 e2p_feature_to_string@Base 1.45.6 e2p_get_encoding_flags@Base 1.45 e2p_hash2string@Base 1.37 e2p_is_null_uuid@Base 1.37 e2p_jrnl_feature2string@Base 1.41.1 e2p_jrnl_string2feature@Base 1.41.1 e2p_list_journal_super@Base 1.43.5 e2p_mntopt2string@Base 1.37 e2p_os2string@Base 1.37 e2p_percent@Base 1.40 e2p_str2encoding@Base 1.45 e2p_str2encoding_flags@Base 1.45 e2p_string2encmode@Base 1.43 e2p_string2feature@Base 1.37 e2p_string2hash@Base 1.37 e2p_string2mntopt@Base 1.37 e2p_string2os@Base 1.37 e2p_uuid2str@Base 1.37 e2p_uuid_to_str@Base 1.37 fgetflags@Base 1.37 fgetproject@Base 1.43 fgetversion@Base 1.37 fsetflags@Base 1.37 fsetproject@Base 1.43 fsetversion@Base 1.37 getflags@Base 1.37 getversion@Base 1.37 iterate_on_dir@Base 1.37 list_super2@Base 1.37 list_super@Base 1.37 parse_num_blocks2@Base 1.42 parse_num_blocks@Base 1.37 print_flags@Base 1.37 print_fs_errors@Base 1.37 print_fs_state@Base 1.37 setflags@Base 1.37 setversion@Base 1.37 libext2fs.so.2 libext2fs2t64 #MINVER# * Build-Depends-Package: libext2fs-dev badblocks_list_add@Base 1.37 badblocks_list_create@Base 1.37 badblocks_list_free@Base 1.37 badblocks_list_iterate@Base 1.37 badblocks_list_iterate_begin@Base 1.37 badblocks_list_iterate_end@Base 1.37 badblocks_list_test@Base 1.37 et_ext2_error_table@Base 1.37 ext2fs_add_dir_block2@Base 1.42 ext2fs_add_dir_block@Base 1.37 ext2fs_add_exit_fn@Base 1.43 ext2fs_add_journal_device@Base 1.37 ext2fs_add_journal_inode2@Base 1.42.9-3~ ext2fs_add_journal_inode3@Base 1.46.0 ext2fs_add_journal_inode@Base 1.37 ext2fs_adjust_ea_refcount2@Base 1.42 ext2fs_adjust_ea_refcount3@Base 1.43 ext2fs_adjust_ea_refcount@Base 1.37 ext2fs_alloc_block2@Base 1.42 ext2fs_alloc_block3@Base 1.44.0~rc1 ext2fs_alloc_block@Base 1.37 ext2fs_alloc_generic_bmap@Base 1.42 ext2fs_alloc_range@Base 1.43 ext2fs_allocate_block_bitmap@Base 1.37 ext2fs_allocate_generic_bitmap@Base 1.37 ext2fs_allocate_group_table@Base 1.37 ext2fs_allocate_inode_bitmap@Base 1.37 ext2fs_allocate_subcluster_bitmap@Base 1.42 ext2fs_allocate_tables@Base 1.37 ext2fs_badblocks_copy@Base 1.37 ext2fs_badblocks_equal@Base 1.37 ext2fs_badblocks_list_add@Base 1.37 ext2fs_badblocks_list_create@Base 1.37 ext2fs_badblocks_list_del@Base 1.37 ext2fs_badblocks_list_free@Base 1.37 ext2fs_badblocks_list_iterate@Base 1.37 ext2fs_badblocks_list_iterate_begin@Base 1.37 ext2fs_badblocks_list_iterate_end@Base 1.37 ext2fs_badblocks_list_test@Base 1.37 ext2fs_bg_checksum@Base 1.42 ext2fs_bg_checksum_set@Base 1.42 ext2fs_bg_flags@Base 1.42 ext2fs_bg_flags_clear@Base 1.42 ext2fs_bg_flags_set@Base 1.42 ext2fs_bg_flags_test@Base 1.42 ext2fs_bg_flags_zap@Base 1.42 ext2fs_bg_free_blocks_count@Base 1.42 ext2fs_bg_free_blocks_count_set@Base 1.42 ext2fs_bg_free_inodes_count@Base 1.42 ext2fs_bg_free_inodes_count_set@Base 1.42 ext2fs_bg_has_super@Base 1.37 ext2fs_bg_itable_unused@Base 1.42 ext2fs_bg_itable_unused_set@Base 1.42 ext2fs_bg_used_dirs_count@Base 1.42 ext2fs_bg_used_dirs_count_set@Base 1.42 ext2fs_bitcount@Base 1.42.7 ext2fs_blkmap64_bitarray@Base 1.42 ext2fs_blkmap64_rbtree@Base 1.42.1 ext2fs_block_alloc_stats2@Base 1.42 ext2fs_block_alloc_stats@Base 1.37 ext2fs_block_alloc_stats_range@Base 1.42.9-3~ ext2fs_block_bitmap_checksum@Base 1.43 ext2fs_block_bitmap_csum_set@Base 1.43 ext2fs_block_bitmap_csum_verify@Base 1.43 ext2fs_block_bitmap_loc@Base 1.42 ext2fs_block_bitmap_loc_set@Base 1.42 ext2fs_block_iterate2@Base 1.37 ext2fs_block_iterate3@Base 1.42 ext2fs_block_iterate@Base 1.37 ext2fs_blocks_count@Base 1.42 ext2fs_blocks_count_add@Base 1.42 ext2fs_blocks_count_set@Base 1.42 ext2fs_bmap2@Base 1.41.0 ext2fs_bmap@Base 1.37 ext2fs_calculate_summary_stats@Base 1.46.0 ext2fs_casefold_cmp@Base 1.46.0 ext2fs_check_desc@Base 1.37 ext2fs_check_directory@Base 1.37 ext2fs_check_encoded_name@Base 1.46.0 ext2fs_check_if_mounted@Base 1.37 ext2fs_check_mount_point@Base 1.37 ext2fs_clear_bit64@Base 1.42 ext2fs_clear_bit@Base 1.37 ext2fs_clear_block_bitmap@Base 1.37 ext2fs_clear_block_uninit@Base 1.43 ext2fs_clear_generic_bitmap@Base 1.41.0 ext2fs_clear_generic_bmap@Base 1.42 ext2fs_clear_inode_bitmap@Base 1.37 ext2fs_close2@Base 1.42 ext2fs_close@Base 1.37 ext2fs_close_free@Base 1.42.11 ext2fs_close_inode_scan@Base 1.37 ext2fs_compare_block_bitmap@Base 1.37 ext2fs_compare_generic_bitmap@Base 1.41.0 ext2fs_compare_generic_bmap@Base 1.42 ext2fs_compare_inode_bitmap@Base 1.37 ext2fs_const_inode@Base 1.43 ext2fs_convert_subcluster_bitmap@Base 1.42 ext2fs_copy_bitmap@Base 1.37 ext2fs_copy_dblist@Base 1.37 ext2fs_copy_generic_bitmap@Base 1.41.0 ext2fs_copy_generic_bmap@Base 1.42 ext2fs_count_blocks@Base 1.46.0 ext2fs_count_used_blocks@Base 1.47.1~rc1 ext2fs_count_used_clusters@Base 1.46.0 ext2fs_crc16@Base 1.41.1 ext2fs_crc32_be@Base 1.43 ext2fs_crc32c_le@Base 1.42 ext2fs_create_icount2@Base 1.37 ext2fs_create_icount@Base 1.37 ext2fs_create_icount_tdb@Base 1.40 ext2fs_create_inode_cache@Base 1.43 ext2fs_create_journal_superblock2@Base 1.46.0 ext2fs_create_journal_superblock@Base 1.37 ext2fs_create_orphan_file@Base 1.47.0 ext2fs_create_resize_inode@Base 1.37 ext2fs_dblist_count2@Base 1.42 ext2fs_dblist_count@Base 1.37 ext2fs_dblist_dir_iterate@Base 1.37 ext2fs_dblist_drop_last@Base 1.40.8 ext2fs_dblist_get_last2@Base 1.42 ext2fs_dblist_get_last@Base 1.40.8 ext2fs_dblist_iterate2@Base 1.42 ext2fs_dblist_iterate3@Base 1.43 ext2fs_dblist_iterate@Base 1.37 ext2fs_dblist_sort2@Base 1.42 ext2fs_dblist_sort@Base 1.37 ext2fs_decode_extent@Base 1.46.0 ext2fs_default_journal_size@Base 1.40 ext2fs_default_orphan_file_blocks@Base 1.47.0 ext2fs_descriptor_block_loc2@Base 1.42 ext2fs_descriptor_block_loc@Base 1.37 ext2fs_dir_block_csum_set@Base 1.43 ext2fs_dir_block_csum_verify@Base 1.43 ext2fs_dir_iterate2@Base 1.37 ext2fs_dir_iterate@Base 1.37 ext2fs_dirent_csum_verify@Base 1.43 ext2fs_dirent_file_type@Base 1.43 ext2fs_dirent_has_tail@Base 1.43 ext2fs_dirent_name_len@Base 1.43 ext2fs_dirent_set_file_type@Base 1.43 ext2fs_dirent_set_name_len@Base 1.43 ext2fs_dirent_swab_in2@Base 1.43 ext2fs_dirent_swab_in@Base 1.43 ext2fs_dirent_swab_out2@Base 1.43 ext2fs_dirent_swab_out@Base 1.43 ext2fs_dirhash2@Base 1.45 ext2fs_dirhash@Base 1.37 ext2fs_div64_ceil@Base 1.42 ext2fs_div_ceil@Base 1.40 ext2fs_djb2_hash@Base 1.44.3~rc1 ext2fs_do_orphan_file_block_csum@Base 1.47.0 ext2fs_dup_handle@Base 1.37 ext2fs_dx_csum@Base 1.46~WIP.2019.10.09 ext2fs_expand_dir@Base 1.37 ext2fs_ext_attr_block_csum_set@Base 1.43 ext2fs_ext_attr_block_csum_verify@Base 1.43 ext2fs_ext_attr_block_rehash@Base 1.44.0~rc1 ext2fs_ext_attr_hash_entry2@Base 1.44.0~rc1 ext2fs_ext_attr_hash_entry3@Base 1.46.6 ext2fs_ext_attr_hash_entry@Base 1.41.0 ext2fs_ext_attr_hash_entry_signed@Base 1.46.6 ext2fs_extent_block_csum_set@Base 1.43 ext2fs_extent_block_csum_verify@Base 1.43 ext2fs_extent_delete@Base 1.41.0 ext2fs_extent_fix_parents@Base 1.42.7 ext2fs_extent_free@Base 1.41.0 ext2fs_extent_get@Base 1.41.0 ext2fs_extent_get_info@Base 1.41.0 ext2fs_extent_goto2@Base 1.42.7 ext2fs_extent_goto@Base 1.41.0 ext2fs_extent_header_verify@Base 1.41.0 ext2fs_extent_insert@Base 1.41.0 ext2fs_extent_node_split@Base 1.42.7 ext2fs_extent_open2@Base 1.41.6 ext2fs_extent_open@Base 1.41.0 ext2fs_extent_replace@Base 1.41.0 ext2fs_extent_set_bmap@Base 1.41.0 ext2fs_fallocate@Base 1.43 ext2fs_fast_clear_bit64@Base 1.42 ext2fs_fast_clear_bit@Base 1.39 ext2fs_fast_mark_block_bitmap2@Base 1.42 ext2fs_fast_mark_block_bitmap@Base 1.37 ext2fs_fast_mark_block_bitmap_range2@Base 1.42 ext2fs_fast_mark_block_bitmap_range@Base 1.37 ext2fs_fast_mark_inode_bitmap2@Base 1.42 ext2fs_fast_mark_inode_bitmap@Base 1.37 ext2fs_fast_set_bit64@Base 1.42 ext2fs_fast_set_bit@Base 1.39 ext2fs_fast_test_block_bitmap2@Base 1.42 ext2fs_fast_test_block_bitmap@Base 1.37 ext2fs_fast_test_block_bitmap_range2@Base 1.42 ext2fs_fast_test_block_bitmap_range@Base 1.37 ext2fs_fast_test_inode_bitmap2@Base 1.42 ext2fs_fast_test_inode_bitmap@Base 1.37 ext2fs_fast_unmark_block_bitmap2@Base 1.42 ext2fs_fast_unmark_block_bitmap@Base 1.37 ext2fs_fast_unmark_block_bitmap_range2@Base 1.42 ext2fs_fast_unmark_block_bitmap_range@Base 1.37 ext2fs_fast_unmark_inode_bitmap2@Base 1.42 ext2fs_fast_unmark_inode_bitmap@Base 1.37 ext2fs_file_acl_block@Base 1.42 ext2fs_file_acl_block_set@Base 1.42 ext2fs_file_block_offset_too_big@Base 1.42.9 ext2fs_file_close@Base 1.37 ext2fs_file_flush@Base 1.37 ext2fs_file_get_fs@Base 1.37 ext2fs_file_get_inode@Base 1.42 ext2fs_file_get_inode_num@Base 1.42.1 ext2fs_file_get_lsize@Base 1.37 ext2fs_file_get_size@Base 1.37 ext2fs_file_llseek@Base 1.37 ext2fs_file_lseek@Base 1.37 ext2fs_file_open2@Base 1.37 ext2fs_file_open@Base 1.37 ext2fs_file_read@Base 1.37 ext2fs_file_set_size2@Base 1.42 ext2fs_file_set_size@Base 1.37 ext2fs_file_write@Base 1.37 ext2fs_find_block_device@Base 1.37 ext2fs_find_first_set_block_bitmap2@Base 1.42.9-3~ ext2fs_find_first_set_generic_bitmap@Base 1.42.9-3~ ext2fs_find_first_set_generic_bmap@Base 1.42.9-3~ ext2fs_find_first_set_inode_bitmap2@Base 1.42.9-3~ ext2fs_find_first_zero_block_bitmap2@Base 1.42.2 ext2fs_find_first_zero_generic_bitmap@Base 1.42.3 ext2fs_find_first_zero_generic_bmap@Base 1.42.2 ext2fs_find_first_zero_inode_bitmap2@Base 1.42.2 ext2fs_find_inode_goal@Base 1.43 ext2fs_fix_extents_checksums@Base 1.45 ext2fs_flush2@Base 1.42 ext2fs_flush@Base 1.37 ext2fs_flush_icache@Base 1.37 ext2fs_follow_link@Base 1.37 ext2fs_free@Base 1.37 ext2fs_free_block_bitmap@Base 1.37 ext2fs_free_blocks_count@Base 1.42 ext2fs_free_blocks_count_add@Base 1.42 ext2fs_free_blocks_count_set@Base 1.42 ext2fs_free_dblist@Base 1.37 ext2fs_free_ext_attr@Base 1.43 ext2fs_free_generic_bitmap@Base 1.37 ext2fs_free_generic_bmap@Base 1.42 ext2fs_free_icount@Base 1.37 ext2fs_free_inode_bitmap@Base 1.37 ext2fs_free_inode_cache@Base 1.43 ext2fs_free_mem@Base 1.37 ext2fs_fstat@Base 1.42 ext2fs_fudge_block_bitmap_end2@Base 1.42 ext2fs_fudge_block_bitmap_end@Base 1.37 ext2fs_fudge_generic_bitmap_end@Base 1.41.0 ext2fs_fudge_generic_bmap_end@Base 1.42 ext2fs_fudge_inode_bitmap_end@Base 1.37 ext2fs_get_array@Base 1.40.3 ext2fs_get_arrayzero@Base 1.42 ext2fs_get_bitmap_granularity@Base 1.42 ext2fs_get_block_bitmap_end2@Base 1.42 ext2fs_get_block_bitmap_end@Base 1.37 ext2fs_get_block_bitmap_range2@Base 1.42 ext2fs_get_block_bitmap_range@Base 1.41.0 ext2fs_get_block_bitmap_start2@Base 1.42 ext2fs_get_block_bitmap_start@Base 1.37 ext2fs_get_blocks@Base 1.37 ext2fs_get_data_io@Base 1.37 ext2fs_get_device_phys_sectsize@Base 1.41.12 ext2fs_get_device_sectsize@Base 1.37 ext2fs_get_device_size2@Base 1.41.4 ext2fs_get_device_size@Base 1.37 ext2fs_get_dio_alignment@Base 1.42.3 ext2fs_get_dx_countlimit@Base 1.43 ext2fs_get_ea_inode_hash@Base 1.44.0~rc1 ext2fs_get_ea_inode_ref@Base 1.44.0~rc1 ext2fs_get_free_blocks2@Base 1.42 ext2fs_get_free_blocks@Base 1.37 ext2fs_get_generic_bitmap_end@Base 1.41.0 ext2fs_get_generic_bitmap_range@Base 1.41.0 ext2fs_get_generic_bitmap_start@Base 1.41.0 ext2fs_get_generic_bmap_end@Base 1.42 ext2fs_get_generic_bmap_range@Base 1.42 ext2fs_get_generic_bmap_start@Base 1.42 ext2fs_get_icount_size@Base 1.37 ext2fs_get_inode_bitmap_end2@Base 1.42 ext2fs_get_inode_bitmap_end@Base 1.37 ext2fs_get_inode_bitmap_range2@Base 1.42 ext2fs_get_inode_bitmap_range@Base 1.41.0 ext2fs_get_inode_bitmap_start2@Base 1.42 ext2fs_get_inode_bitmap_start@Base 1.37 ext2fs_get_journal_params@Base 1.46.0 ext2fs_get_library_version@Base 1.37 ext2fs_get_mem@Base 1.37 ext2fs_get_memalign@Base 1.41.13 ext2fs_get_memzero@Base 1.42 ext2fs_get_next_inode@Base 1.37 ext2fs_get_next_inode_full@Base 1.37 ext2fs_get_num_dirs@Base 1.37 ext2fs_get_pathname@Base 1.37 ext2fs_get_rec_len@Base 1.41.7 ext2fs_get_stat_i_blocks@Base 1.45.5 ext2fs_group_blocks_count@Base 1.42 ext2fs_group_desc@Base 1.42 ext2fs_group_desc_csum@Base 1.42.2 ext2fs_group_desc_csum_set@Base 1.41.0 ext2fs_group_desc_csum_verify@Base 1.41.0 ext2fs_group_first_block2@Base 1.42 ext2fs_group_first_block@Base 1.40 ext2fs_group_last_block2@Base 1.42 ext2fs_group_last_block@Base 1.40 ext2fs_group_of_blk2@Base 1.42 ext2fs_group_of_blk@Base 1.37 ext2fs_group_of_ino@Base 1.37 ext2fs_hashmap_add@Base 1.44.3~rc1 ext2fs_hashmap_create@Base 1.44.3~rc1 ext2fs_hashmap_free@Base 1.44.3~rc1 ext2fs_hashmap_iter_in_order@Base 1.44.3~rc1 ext2fs_hashmap_lookup@Base 1.44.3~rc1 ext2fs_htree_intnode_maxrecs@Base 1.44.0~rc1 ext2fs_iblk_add_blocks@Base 1.41.0 ext2fs_iblk_set@Base 1.41.0 ext2fs_iblk_sub_blocks@Base 1.41.0 ext2fs_icount_decrement@Base 1.37 ext2fs_icount_fetch@Base 1.37 ext2fs_icount_increment@Base 1.37 ext2fs_icount_store@Base 1.37 ext2fs_icount_validate@Base 1.37 ext2fs_image_bitmap_read@Base 1.37 ext2fs_image_bitmap_write@Base 1.37 ext2fs_image_inode_read@Base 1.37 ext2fs_image_inode_write@Base 1.37 ext2fs_image_super_read@Base 1.37 ext2fs_image_super_write@Base 1.37 ext2fs_init_csum_seed@Base 1.43 ext2fs_init_dblist@Base 1.37 ext2fs_initialize@Base 1.37 ext2fs_initialize_dirent_tail@Base 1.43 ext2fs_inline_data_dir_iterate@Base 1.43 ext2fs_inline_data_ea_remove@Base 1.43 ext2fs_inline_data_expand@Base 1.43 ext2fs_inline_data_get@Base 1.43 ext2fs_inline_data_init@Base 1.43 ext2fs_inline_data_set@Base 1.43 ext2fs_inline_data_size@Base 1.43 ext2fs_inode@Base 1.43 ext2fs_inode_alloc_stats2@Base 1.37 ext2fs_inode_alloc_stats@Base 1.37 ext2fs_inode_bitmap_checksum@Base 1.43 ext2fs_inode_bitmap_csum_set@Base 1.43 ext2fs_inode_bitmap_csum_verify@Base 1.43 ext2fs_inode_bitmap_loc@Base 1.42 ext2fs_inode_bitmap_loc_set@Base 1.42 ext2fs_inode_csum_set@Base 1.43 ext2fs_inode_csum_verify@Base 1.43 ext2fs_inode_data_blocks2@Base 1.42 ext2fs_inode_data_blocks@Base 1.37 ext2fs_inode_has_valid_blocks2@Base 1.42 ext2fs_inode_has_valid_blocks@Base 1.37 ext2fs_inode_i_blocks@Base 1.42 ext2fs_inode_io_intern2@Base 1.37 ext2fs_inode_io_intern@Base 1.37 ext2fs_inode_scan_flags@Base 1.37 ext2fs_inode_scan_goto_blockgroup@Base 1.37 ext2fs_inode_size_set@Base 1.42.12 ext2fs_inode_table_loc@Base 1.42 ext2fs_inode_table_loc_set@Base 1.42 ext2fs_inodes_per_orphan_block@Base 1.47.0 ext2fs_is_fast_symlink@Base 1.44.0~rc1 ext2fs_journal_sb_start@Base 1.42.12 ext2fs_link@Base 1.37 ext2fs_list_backups@Base 1.47.1~rc1 ext2fs_llseek@Base 1.37 ext2fs_load_nls_table@Base 1.45.1 ext2fs_log10_u32@Base 1.47.3 ext2fs_log10_u64@Base 1.47.3 ext2fs_log2_u32@Base 1.47.3 ext2fs_log2_u64@Base 1.47.3 ext2fs_lookup@Base 1.37 ext2fs_make_generic_bitmap@Base 1.41.0 ext2fs_map_cluster_block@Base 1.42.9 ext2fs_mark_bb_dirty@Base 1.37 ext2fs_mark_block_bitmap2@Base 1.42 ext2fs_mark_block_bitmap@Base 1.37 ext2fs_mark_block_bitmap_range2@Base 1.42 ext2fs_mark_block_bitmap_range@Base 1.37 ext2fs_mark_changed@Base 1.37 ext2fs_mark_generic_bitmap@Base 1.37 ext2fs_mark_generic_bmap@Base 1.42 ext2fs_mark_ib_dirty@Base 1.37 ext2fs_mark_inode_bitmap2@Base 1.42 ext2fs_mark_inode_bitmap@Base 1.37 ext2fs_mark_super_dirty@Base 1.37 ext2fs_mark_valid@Base 1.37 ext2fs_max_extent_depth@Base 1.43 ext2fs_mem_is_zero@Base 1.42 ext2fs_mkdir2@Base 1.47.3 ext2fs_mkdir@Base 1.37 ext2fs_mmp_clear@Base 1.42 ext2fs_mmp_csum_set@Base 1.43 ext2fs_mmp_csum_verify@Base 1.43 ext2fs_mmp_init@Base 1.42 ext2fs_mmp_new_seq@Base 1.42 ext2fs_mmp_read@Base 1.42 ext2fs_mmp_start@Base 1.42 ext2fs_mmp_stop@Base 1.42 ext2fs_mmp_update2@Base 1.43 ext2fs_mmp_update@Base 1.42 ext2fs_mmp_write@Base 1.42 ext2fs_namei@Base 1.37 ext2fs_namei_follow@Base 1.37 ext2fs_native_flag@Base 1.37 ext2fs_new_block2@Base 1.42 ext2fs_new_block3@Base 1.44.0~rc1 ext2fs_new_block@Base 1.37 ext2fs_new_dir_block@Base 1.37 ext2fs_new_dir_inline_data@Base 1.43 ext2fs_new_inode@Base 1.37 ext2fs_new_range@Base 1.43 ext2fs_numeric_progress_close@Base 1.42 ext2fs_numeric_progress_init@Base 1.42 ext2fs_numeric_progress_ops@Base 1.43 ext2fs_numeric_progress_update@Base 1.42 ext2fs_open2@Base 1.37 ext2fs_open@Base 1.37 ext2fs_open_file@Base 1.42 ext2fs_open_inode_scan@Base 1.37 ext2fs_orphan_block_tail@Base 1.47.0 ext2fs_orphan_file_block_csum_set@Base 1.47.0 ext2fs_orphan_file_block_csum_verify@Base 1.47.0 ext2fs_parse_version_string@Base 1.37 ext2fs_process_dir_block@Base 1.37 ext2fs_punch@Base 1.42 ext2fs_r_blocks_count@Base 1.42 ext2fs_r_blocks_count_add@Base 1.42 ext2fs_r_blocks_count_set@Base 1.42 ext2fs_rb_erase@Base 1.42.1 ext2fs_rb_first@Base 1.42.1 ext2fs_rb_insert_color@Base 1.42.1 ext2fs_rb_last@Base 1.42.1 ext2fs_rb_next@Base 1.42.1 ext2fs_rb_prev@Base 1.42.1 ext2fs_rb_replace_node@Base 1.42.1 ext2fs_read_bb_FILE2@Base 1.37 ext2fs_read_bb_FILE@Base 1.37 ext2fs_read_bb_inode@Base 1.37 ext2fs_read_bitmaps@Base 1.37 ext2fs_read_block_bitmap@Base 1.37 ext2fs_read_dir_block2@Base 1.37 ext2fs_read_dir_block3@Base 1.42 ext2fs_read_dir_block4@Base 1.43 ext2fs_read_dir_block@Base 1.37 ext2fs_read_ext_attr2@Base 1.42 ext2fs_read_ext_attr3@Base 1.43 ext2fs_read_ext_attr@Base 1.37 ext2fs_read_ind_block@Base 1.37 ext2fs_read_inode2@Base 1.45 ext2fs_read_inode@Base 1.37 ext2fs_read_inode_bitmap@Base 1.37 ext2fs_read_inode_full@Base 1.37 ext2fs_remove_exit_fn@Base 1.43 ext2fs_reserve_super_and_bgd2@Base 1.47.1~rc1 ext2fs_reserve_super_and_bgd@Base 1.37 ext2fs_resize_array@Base 1.45.6 ext2fs_resize_block_bitmap2@Base 1.42 ext2fs_resize_block_bitmap@Base 1.37 ext2fs_resize_generic_bitmap@Base 1.37 ext2fs_resize_generic_bmap@Base 1.42 ext2fs_resize_inode_bitmap2@Base 1.42 ext2fs_resize_inode_bitmap@Base 1.37 ext2fs_resize_mem@Base 1.37 ext2fs_rewrite_to_io@Base 1.37 ext2fs_rw_bitmaps@Base 1.46.0 ext2fs_safe_getenv@Base 1.47.1~rc1 ext2fs_set_alloc_block_callback@Base 1.41.0 ext2fs_set_bit64@Base 1.42 ext2fs_set_bit@Base 1.37 ext2fs_set_bitmap_padding@Base 1.37 ext2fs_set_block_alloc_stats_callback@Base 1.41.0 ext2fs_set_block_alloc_stats_range_callback@Base 1.43 ext2fs_set_block_bitmap_range2@Base 1.42 ext2fs_set_block_bitmap_range@Base 1.41.0 ext2fs_set_data_io@Base 1.37 ext2fs_set_dir_block2@Base 1.42 ext2fs_set_dir_block@Base 1.37 ext2fs_set_ea_inode_hash@Base 1.44.0~rc1 ext2fs_set_ea_inode_ref@Base 1.44.0~rc1 ext2fs_set_gdt_csum@Base 1.41.0 ext2fs_set_generic_bitmap_padding@Base 1.41.0 ext2fs_set_generic_bitmap_range@Base 1.41.0 ext2fs_set_generic_bmap_padding@Base 1.42 ext2fs_set_generic_bmap_range@Base 1.42 ext2fs_set_inode_bitmap_range2@Base 1.42 ext2fs_set_inode_bitmap_range@Base 1.41.0 ext2fs_set_inode_callback@Base 1.37 ext2fs_set_new_range_callback@Base 1.43 ext2fs_set_rec_len@Base 1.41.7 ext2fs_sha512@Base 1.43 ext2fs_stat@Base 1.42 ext2fs_super_and_bgd_loc2@Base 1.42 ext2fs_super_and_bgd_loc@Base 1.37 ext2fs_superblock_csum_set@Base 1.43 ext2fs_superblock_csum_verify@Base 1.43 ext2fs_swab16@Base 1.37 ext2fs_swab32@Base 1.37 ext2fs_swab64@Base 1.40 ext2fs_swap_ext_attr@Base 1.40 ext2fs_swap_ext_attr_entry@Base 1.41 ext2fs_swap_ext_attr_header@Base 1.41 ext2fs_swap_group_desc2@Base 1.42 ext2fs_swap_group_desc@Base 1.37 ext2fs_swap_inode@Base 1.37 ext2fs_swap_inode_full@Base 1.40 ext2fs_swap_mmp@Base 1.42 ext2fs_swap_super@Base 1.37 ext2fs_symlink@Base 1.42.7 ext2fs_sync_device@Base 1.37 ext2fs_tdb_append@Base 1.40 ext2fs_tdb_chainlock@Base 1.40 ext2fs_tdb_chainlock_mark@Base 1.40.7 ext2fs_tdb_chainlock_nonblock@Base 1.40.7 ext2fs_tdb_chainlock_read@Base 1.40 ext2fs_tdb_chainlock_unmark@Base 1.40.7 ext2fs_tdb_chainunlock@Base 1.40 ext2fs_tdb_chainunlock_read@Base 1.40 ext2fs_tdb_close@Base 1.40 ext2fs_tdb_delete@Base 1.40 ext2fs_tdb_dump_all@Base 1.40 ext2fs_tdb_enable_seqnum@Base 1.40.7 ext2fs_tdb_error@Base 1.40 ext2fs_tdb_errorstr@Base 1.40 ext2fs_tdb_exists@Base 1.40 ext2fs_tdb_fd@Base 1.40 ext2fs_tdb_fetch@Base 1.40 ext2fs_tdb_firstkey@Base 1.40 ext2fs_tdb_flush@Base 1.43 ext2fs_tdb_get_flags@Base 1.40 ext2fs_tdb_get_logging_private@Base 1.40 ext2fs_tdb_get_seqnum@Base 1.40 ext2fs_tdb_hash_size@Base 1.40 ext2fs_tdb_increment_seqnum_nonblock@Base 1.40.7 ext2fs_tdb_lock_nonblock@Base 1.40.7 ext2fs_tdb_lockall@Base 1.40 ext2fs_tdb_lockall_mark@Base 1.40.7 ext2fs_tdb_lockall_nonblock@Base 1.40.7 ext2fs_tdb_lockall_read@Base 1.40 ext2fs_tdb_lockall_read_nonblock@Base 1.40.7 ext2fs_tdb_lockall_unmark@Base 1.40.7 ext2fs_tdb_log_fn@Base 1.40 ext2fs_tdb_map_size@Base 1.40 ext2fs_tdb_name@Base 1.40 ext2fs_tdb_nextkey@Base 1.40 ext2fs_tdb_open@Base 1.40 ext2fs_tdb_open_ex@Base 1.40 ext2fs_tdb_parse_record@Base 1.40 ext2fs_tdb_printfreelist@Base 1.40 ext2fs_tdb_reopen@Base 1.40 ext2fs_tdb_reopen_all@Base 1.40 ext2fs_tdb_set_logging_function@Base 1.40 ext2fs_tdb_set_max_dead@Base 1.40 ext2fs_tdb_store@Base 1.40 ext2fs_tdb_transaction_cancel@Base 1.40 ext2fs_tdb_transaction_commit@Base 1.40 ext2fs_tdb_transaction_recover@Base 1.40 ext2fs_tdb_transaction_start@Base 1.40 ext2fs_tdb_traverse@Base 1.40 ext2fs_tdb_traverse_read@Base 1.40 ext2fs_tdb_unlockall@Base 1.40 ext2fs_tdb_unlockall_read@Base 1.40 ext2fs_tdb_validate_freelist@Base 1.40 ext2fs_test_bb_dirty@Base 1.37 ext2fs_test_bit64@Base 1.42 ext2fs_test_bit@Base 1.37 ext2fs_test_block_bitmap2@Base 1.42 ext2fs_test_block_bitmap@Base 1.37 ext2fs_test_block_bitmap_range2@Base 1.42 ext2fs_test_block_bitmap_range@Base 1.37 ext2fs_test_changed@Base 1.37 ext2fs_test_generic_bitmap@Base 1.37 ext2fs_test_generic_bmap@Base 1.42 ext2fs_test_ib_dirty@Base 1.37 ext2fs_test_inode_bitmap2@Base 1.42 ext2fs_test_inode_bitmap@Base 1.37 ext2fs_test_inode_bitmap_range@Base 1.41.8 ext2fs_test_valid@Base 1.37 ext2fs_truncate_orphan_file@Base 1.47.0 ext2fs_u32_copy@Base 1.37 ext2fs_u32_list_add@Base 1.37 ext2fs_u32_list_count@Base 1.37 ext2fs_u32_list_create@Base 1.37 ext2fs_u32_list_del@Base 1.37 ext2fs_u32_list_equal@Base 1.37 ext2fs_u32_list_find@Base 1.37 ext2fs_u32_list_free@Base 1.37 ext2fs_u32_list_iterate@Base 1.37 ext2fs_u32_list_iterate_begin@Base 1.37 ext2fs_u32_list_iterate_end@Base 1.37 ext2fs_u32_list_test@Base 1.37 ext2fs_unlink@Base 1.37 ext2fs_unmark_block_bitmap2@Base 1.42 ext2fs_unmark_block_bitmap@Base 1.37 ext2fs_unmark_block_bitmap_range2@Base 1.42 ext2fs_unmark_block_bitmap_range@Base 1.37 ext2fs_unmark_generic_bitmap@Base 1.37 ext2fs_unmark_generic_bmap@Base 1.42 ext2fs_unmark_inode_bitmap2@Base 1.42 ext2fs_unmark_inode_bitmap@Base 1.37 ext2fs_unmark_valid@Base 1.37 ext2fs_update_bb_inode@Base 1.37 ext2fs_update_dynamic_rev@Base 1.37 ext2fs_verify_csum_type@Base 1.43 ext2fs_warn_bitmap2@Base 1.37 ext2fs_warn_bitmap32@Base 1.42 ext2fs_warn_bitmap@Base 1.37 ext2fs_write_bb_FILE@Base 1.37 ext2fs_write_bitmaps@Base 1.37 ext2fs_write_block_bitmap@Base 1.37 ext2fs_write_dir_block2@Base 1.37 ext2fs_write_dir_block3@Base 1.42 ext2fs_write_dir_block4@Base 1.43 ext2fs_write_dir_block@Base 1.37 ext2fs_write_ext_attr2@Base 1.42 ext2fs_write_ext_attr3@Base 1.43 ext2fs_write_ext_attr@Base 1.37 ext2fs_write_ind_block@Base 1.37 ext2fs_write_inode2@Base 1.45 ext2fs_write_inode@Base 1.37 ext2fs_write_inode_bitmap@Base 1.37 ext2fs_write_inode_full@Base 1.37 ext2fs_write_new_inode@Base 1.37 ext2fs_xattr_get@Base 1.43 ext2fs_xattr_inode_max_size@Base 1.43 ext2fs_xattr_remove@Base 1.43 ext2fs_xattr_remove_all@Base 1.47.3 ext2fs_xattr_set@Base 1.43 ext2fs_xattrs_close@Base 1.43 ext2fs_xattrs_count@Base 1.43 ext2fs_xattrs_flags@Base 1.43.4~WIP.2017.01.30 ext2fs_xattrs_iterate@Base 1.43 ext2fs_xattrs_open@Base 1.43 ext2fs_xattrs_read@Base 1.43 ext2fs_xattrs_read_inode@Base 1.47.0 ext2fs_xattrs_write@Base 1.43 ext2fs_zero_blocks2@Base 1.42 ext2fs_zero_blocks@Base 1.41.0 initialize_ext2_error_table@Base 1.37 initialize_ext2_error_table_r@Base 1.37 inode_io_manager@Base 1.37 io_channel_alloc_buf@Base 1.42.3 io_channel_cache_readahead@Base 1.43 io_channel_discard@Base 1.42 io_channel_read_blk64@Base 1.41.1 io_channel_set_options@Base 1.37 io_channel_write_blk64@Base 1.41.1 io_channel_write_byte@Base 1.37 io_channel_zeroout@Base 1.43 qcow2_read_header@Base 1.42 qcow2_write_raw_image@Base 1.42 set_undo_io_backing_manager@Base 1.41.0 set_undo_io_backup_file@Base 1.41.0 sparse_io_manager@Base 1.44.0~rc1 sparsefd_io_manager@Base 1.44.0~rc1 test_io_backing_manager@Base 1.37 test_io_cb_read_blk64@Base 1.41.0 test_io_cb_read_blk@Base 1.37 test_io_cb_set_blksize@Base 1.37 test_io_cb_write_blk64@Base 1.41.0 test_io_cb_write_blk@Base 1.37 test_io_cb_write_byte@Base 1.37 test_io_manager@Base 1.37 undo_io_manager@Base 1.41.0 unix_io_manager@Base 1.37 unixfd_io_manager@Base 1.43.2 e2fsprogs-1.47.3-rc1/debian/libss2.install000066400000000000000000000000221501560632700202120ustar00rootroot00000000000000lib/*/libss*.so.* e2fsprogs-1.47.3-rc1/debian/libss2.symbols000066400000000000000000000017241501560632700202460ustar00rootroot00000000000000libss.so.2 libss2 #MINVER# * Build-Depends-Package: ss-dev _ss_pager_name@Base 1.01 _ss_table@Base 1.01 et_ss_error_table@Base 1.35 initialize_ss_error_table@Base 1.01 initialize_ss_error_table_r@Base 1.34 ss_abort_subsystem@Base 1.01 ss_add_info_dir@Base 1.01 ss_add_request_table@Base 1.01 ss_create_invocation@Base 1.01 ss_delete_info_dir@Base 1.01 ss_delete_invocation@Base 1.01 ss_delete_request_table@Base 1.01 ss_error@Base 1.01 ss_execute_command@Base 1.01 ss_execute_line@Base 1.01 ss_get_prompt@Base 1.01 ss_get_readline@Base 1.34 ss_help@Base 1.01 ss_list_requests@Base 1.01 ss_listen@Base 1.01 ss_name@Base 1.01 ss_page_stdin@Base 1.01 ss_pager_create@Base 1.01 ss_parse@Base 1.01 ss_perror@Base 1.01 ss_quit@Base 1.01 ss_rl_completion@Base 1.34 ss_safe_getenv@Base 1.38 ss_self_identify@Base 1.01 ss_set_prompt@Base 1.01 ss_std_requests@Base 1.01 ss_subsystem_name@Base 1.01 ss_subsystem_version@Base 1.01 ss_unimplemented@Base 1.01 e2fsprogs-1.47.3-rc1/debian/libuuid1.install000066400000000000000000000000241501560632700205340ustar00rootroot00000000000000lib/*/libuuid*.so.* e2fsprogs-1.47.3-rc1/debian/libuuid1.postinst000066400000000000000000000023571501560632700207640ustar00rootroot00000000000000#!/bin/sh set -e ADDUSERCONF='/etc/adduser.conf' if test -f $ADDUSERCONF; then FIRST_SYSTEM_UID=$(sed -n "s/^[[:space:]]*FIRST_SYSTEM_UID[[:space:]]*=[[:space:]]*[\"']\?\([^\"']*\)[\"']\?/\1/p" $ADDUSERCONF) LAST_SYSTEM_UID=$(sed -n "s/^[[:space:]]*LAST_SYSTEM_UID[[:space:]]*=[[:space:]]*[\"']\?\([^\"']*\)[\"']\?/\1/p" $ADDUSERCONF) FIRST_SYSTEM_GID=$(sed -n "s/^[[:space:]]*FIRST_SYSTEM_GID[[:space:]]*=[[:space:]]*[\"']\?\([^\"']*\)[\"']\?/\1/p" $ADDUSERCONF) LAST_SYSTEM_GID=$(sed -n "s/^[[:space:]]*LAST_SYSTEM_GID[[:space:]]*=[[:space:]]*[\"']\?\([^\"']*\)[\"']\?/\1/p" $ADDUSERCONF) fi if test -z "$FIRST_SYSTEM_UID"; then FIRST_SYSTEM_UID=100 fi if test -z "$LAST_SYSTEM_UID"; then LAST_SYSTEM_UID=999 fi if test -z "$FIRST_SYSTEM_GID"; then FIRST_SYSTEM_GID=100 fi if test -z "$LAST_SYSTEM_GID"; then LAST_SYSTEM_GID=999 fi if ! getent group | grep -q libuuid; then groupadd -f -K GID_MIN=$FIRST_SYSTEM_GID -K GID_MAX=$LAST_SYSTEM_GID libuuid fi if ! getent passwd | grep -q libuuid; then useradd -d /var/lib/libuuid -K UID_MIN=$FIRST_SYSTEM_UID -K UID_MAX=$LAST_SYSTEM_UID -g libuuid libuuid fi mkdir -p /var/lib/libuuid chown libuuid:libuuid /var/lib/libuuid chmod 2775 /var/lib/libuuid #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/libuuid1.postrm000066400000000000000000000001331501560632700204130ustar00rootroot00000000000000#!/bin/sh set -e if [ "$1" = purge ] then rm -rf /var/lib/libuuid fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/libuuid1.symbols000066400000000000000000000007551501560632700205710ustar00rootroot00000000000000libuuid.so.1 libuuid1 #MINVER# uuid__generate_random@Base 1.40.4 uuid__generate_time@Base 1.40.4 uuid_clear@Base 1.05 uuid_compare@Base 1.05 uuid_copy@Base 1.05 uuid_generate@Base 1.05 uuid_generate_random@Base 1.15 uuid_generate_time@Base 1.15 uuid_is_null@Base 1.05 uuid_pack@Base 1.05 uuid_parse@Base 1.05 uuid_time@Base 1.15 uuid_type@Base 1.15 uuid_unpack@Base 1.05 uuid_unparse@Base 1.05 uuid_unparse_lower@Base 1.36 uuid_unparse_upper@Base 1.36 uuid_variant@Base 1.15 e2fsprogs-1.47.3-rc1/debian/logsave.install000066400000000000000000000000521501560632700204570ustar00rootroot00000000000000sbin/logsave usr/share/man/man8/logsave.8 e2fsprogs-1.47.3-rc1/debian/rules000077500000000000000000000151011501560632700165100ustar00rootroot00000000000000#! /usr/bin/make -f # export DH_VERBOSE=1 export DEB_BUILD_MAINT_OPTIONS ?= hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk # be paranoid export LC_ALL ?= C ifeq ($(DEB_HOST_ARCH_OS), hurd) SKIP_FUSE2FS=yes endif ifeq ($(DEB_HOST_ARCH_OS), linux) export deb_systemdsystemunitdir = $(shell pkg-config --variable=systemdsystemunitdir systemd | sed s,^/,,) export deb_udevudevdir = $(shell pkg-config pkg-config --variable=udevdir udev | sed s,^/,,) endif ifneq ($(filter pkg.e2fsprogs.no-fuse2fs,$(DEB_BUILD_PROFILES)),) SKIP_FUSE2FS=yes endif ifneq (,$(filter-out parallel=1,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) JOBS = -j$(NUMJOBS) endif COMERR_VERSION ?= $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3) SS_VERSION ?= $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3) topdir ?= $(shell pwd) tmpdir ?= ${topdir}/debian/tmp udebdir ?= ${topdir}/debian/e2fsprogs-udeb stdbuilddir ?= ${topdir}/debian/BUILD-STD INSTALL ?= install INSTALL_PROGRAM ?= $(INSTALL) -p -m 0755 ifneq (,$(findstring update-symbols,$(DEB_BUILD_OPTIONS))) SYMBOL_LIBS := libext2fst64 libcomerr2 libss2 endif CFLAGS_SHLIB = $(CFLAGS) CFLAGS_STLIB = $(CFLAGS) LDFLAGS_SHLIB = $(LDFLAGS) LDFLAGS_STATIC = $(filter-out -fPIE -fpie -pie,$(LDFLAGS)) BACKTRACE_CONF_FLAGS ?= $(shell if debian/scripts/test-backtrace ; then echo --disable-backtrace ; fi) COMMON_CONF_FLAGS = --enable-elf-shlibs --disable-ubsan \ --disable-addrsan --disable-threadsan --disable-e2initrd-helper \ --disable-fsck --disable-libblkid --disable-libuuid --disable-uuidd \ --infodir=/usr/share/info --enable-symlink-install \ --with-multiarch=$(DEB_HOST_MULTIARCH) \ $(BACKTRACE_CONF_FLAGS) ${EXTRA_CONF_FLAGS} ifneq ($(SKIP_FUSE2FS),) COMMON_CONF_FLAGS += --disable-fuse2fs endif ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) CC ?= $(DEB_HOST_GNU_TYPE)-gcc COMMON_CONF_FLAGS += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) endif # work around Debian Bug #1070042 ifeq ($(DEB_HOST_ARCH),mips64el) COMMON_CONF_FLAGS += --without-libarchive endif %: dh $@ -B${stdbuilddir} override_dh_autoreconf: override_dh_auto_configure: mkdir -p ${stdbuilddir} cd ${stdbuilddir} && AWK=/usr/bin/awk \ ../../configure ${COMMON_CONF_FLAGS} override_dh_auto_build: $(MAKE) -C ${stdbuilddir} V=1 $(JOBS) all ifeq (,$(filter pkg.e2fsprogs.no-static,$(DEB_BUILD_PROFILES))) $(MAKE) -C ${stdbuilddir}/e2fsck V=1 e2fsck.static endif if ! test -d debian/orig-gmo ; then \ mkdir debian/orig-gmo ; \ mv po/*.gmo po/*.po debian/orig-gmo ; \ cp debian/orig-gmo/*.po po ; \ fi $(MAKE) -C ${stdbuilddir}/po V=1 update-gmo $(MAKE) -C ${stdbuilddir}/doc V=1 libext2fs.html $(MAKE) -C ${stdbuilddir}/lib/et V=1 com_err.info com_err.html cat $(shell /bin/ls -1 ./doc/RelNotes/*.txt | tac) | \ gzip -9n > ${stdbuilddir}/NEWS.gz override_dh_auto_clean: if test -d debian/orig-gmo ; then \ rm -f po/*.gmo po/*.po ; \ mv debian/orig-gmo/* po ; \ rmdir debian/orig-gmo ; \ fi rm -rf ${stdbuilddir} override_dh_auto_install: mkdir -p ${tmpdir}/sbin $(MAKE) -C ${stdbuilddir} V=1 install DESTDIR=${tmpdir} \ INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true # static libs and .h files $(MAKE) -C ${stdbuilddir} V=1 install-libs DESTDIR=${tmpdir} LDCONFIG=true ifeq (,$(filter pkg.e2fsprogs.no-static,$(DEB_BUILD_PROFILES))) # statically-linked fsck ${INSTALL_PROGRAM} ${stdbuilddir}/e2fsck/e2fsck.static ${tmpdir}/sbin (cd debian/tmp/usr/share/man/man8 ; cp e2fsck.8 e2fsck.static.8) endif ifeq ($(DEB_HOST_ARCH_OS), hurd) ${INSTALL} -m 0644 misc/mke2fs-hurd.conf ${tmpdir}/etc/mke2fs.conf endif override_dh_install: dh_install -p e2fsprogs --sourcedir=${stdbuilddir} NEWS.gz \ usr/share/doc/e2fsprogs dh_install dh_missing --fail-missing ifeq (,$(filter noudeb,$(DEB_BUILD_PROFILES))) override_dh_lintian: dh_lintian $(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \ debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb endif override_dh_installinfo: # HTML docs $(INSTALL) -d debian/libext2fs-dev/usr/share/doc/libext2fs2/html-info/ $(INSTALL) -p -m 0644 ${stdbuilddir}/doc/*.html \ debian/libext2fs-dev/usr/share/doc/libext2fs2/html-info/ $(INSTALL) -d debian/comerr-dev/usr/share/doc/comerr-dev/html-info/ $(INSTALL) -p -m 0644 ${stdbuilddir}/lib/et/*.html \ debian/comerr-dev/usr/share/doc/comerr-dev/html-info/ # texinfo docs mkdir -p debian/comerr-dev/usr/share/doc/comerr-dev $(INSTALL) -p -m 0644 ${topdir}/doc/libext2fs.texinfo \ debian/libext2fs-dev/usr/share/doc/libext2fs2/libext2fs.texi $(INSTALL) -p -m 0644 ${topdir}/lib/et/com_err.texinfo \ debian/comerr-dev/usr/share/doc/comerr-dev/com_err.texi $(INSTALL) -d debian/comerr-dev/usr/share/doc/comerr-dev/examples $(INSTALL) -p -m 0644 lib/ss/ss_err.et \ ${stdbuilddir}/lib/ext2fs/ext2_err.et \ debian/comerr-dev/usr/share/doc/comerr-dev/examples $(INSTALL) -d debian/ss-dev/usr/share/doc/ss-dev/examples $(INSTALL) -p -m 0644 debugfs/debug_cmds.ct \ debian/ss-dev/usr/share/doc/ss-dev/examples dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info dh_installinfo -plibext2fs-dev ${stdbuilddir}/doc/libext2fs.info ifneq ($(DEB_HOST_ARCH_OS), hurd) override_dh_installsystemd: dh_installsystemd -p e2fsprogs --no-restart-after-upgrade --no-stop-on-upgrade e2scrub_all.timer e2scrub_reap.service endif override_dh_makeshlibs: for i in $(SYMBOL_LIBS); \ do \ echo "Generating symbols for $$i..."; \ dpkg-gensymbols -p$$i -Pdebian/$$i > debian/$$i.tmp-patch; \ cat debian/$$i.tmp-patch; \ patch debian/$$i.symbols < debian/$$i.tmp-patch; \ /bin/rm debian/$$i.tmp-patch; \ done dh_makeshlibs $(if $(filter noudeb,$(DEB_BUILD_PROFILES)),,--add-udeb=e2fsprogs-udeb) override_dh_shlibdeps: dh_shlibdeps -pe2fsprogs -l${stdbuilddir}/lib \ -- -Ldebian/e2fsprogs.shlibs.local ifeq (,$(filter noudeb,$(DEB_BUILD_PROFILES))) dh_shlibdeps -pe2fsprogs-udeb -l${stdbuilddir}/lib \ -- -Ldebian/e2fsprogs-udeb.shlibs.local endif ifeq ($(SKIP_FUSE2FS),) dh_shlibdeps -pfuse2fs -l${stdbuilddir}/lib \ -- -Ldebian/e2fsprogs.shlibs.local endif dh_shlibdeps --remaining-packages -l${stdbuilddir}/lib override_dh_gencontrol: dh_gencontrol -pcomerr-dev -- -v${COMERR_VERSION}-${DEB_VERSION} -VmainBinary=${DEB_VERSION} dh_gencontrol -pss-dev -- -v${SS_VERSION}-${DEB_VERSION} -VmainBinary=${DEB_VERSION} dh_gencontrol --remaining-packages override_dh_auto_test: ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) PRINT_FAILED=yes $(MAKE) -C ${stdbuilddir} V=1 $(JOBS) check endif test_printenv: printenv | sort e2fsprogs-1.47.3-rc1/debian/salsa-ci.yml000066400000000000000000000005231501560632700176510ustar00rootroot00000000000000include: - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml variables: SALSA_CI_IGNORED_BRANCHES: 'web|next|master|maint|old-maint|pristine-tar|pu' e2fsprogs-1.47.3-rc1/debian/scripts/000077500000000000000000000000001501560632700171215ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/scripts/test-backtrace000077500000000000000000000012771501560632700217520ustar00rootroot00000000000000#!/bin/sh # # Test to see if backtrace requires a library in /usr/lib # Returns true if the backtrace command works and requires a library in /usr/lib # This is a nasty workaround for Debian bug #708307, which is really a glibc bug # cat > /tmp/backtrace$$.c << EOF #include int main(int argc, char **argv) { void *stack_syms[32]; int frames; frames = backtrace(stack_syms, 32); backtrace_symbols_fd(stack_syms, frames, 0); } EOF if ! cc -o /tmp/backtrace$$ /tmp/backtrace$$.c; then exit 1 fi if ! ldd /tmp/backtrace$$ > /tmp/backtrace$$.ldd 2>&1 ; then exit 1 fi grep -q /usr/lib /tmp/backtrace$$.ldd ret=$? /bin/rm -f /tmp/backtrace$$* exit $ret e2fsprogs-1.47.3-rc1/debian/shlibs.local000066400000000000000000000001051501560632700177260ustar00rootroot00000000000000libext2fst64 2 libe2p 2 libuuid 1 libcom_err 2 libss 2 libblkid 1 e2fsprogs-1.47.3-rc1/debian/source/000077500000000000000000000000001501560632700167325ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/source/format000066400000000000000000000000141501560632700201400ustar00rootroot000000000000003.0 (quilt) e2fsprogs-1.47.3-rc1/debian/source/lintian-overrides000066400000000000000000000001221501560632700223060ustar00rootroot00000000000000e2fsprogs source: weak-library-dev-dependency e2fsprogs source: no-debian-changes e2fsprogs-1.47.3-rc1/debian/ss-dev.examples000066400000000000000000000000261501560632700203710ustar00rootroot00000000000000debugfs/debug_cmds.ct e2fsprogs-1.47.3-rc1/debian/ss-dev.install000066400000000000000000000002131501560632700202170ustar00rootroot00000000000000usr/lib/*/libss.so usr/lib/*/libss.a usr/include/ss/* usr/bin/mk_cmds usr/share/ss/* usr/share/man/man1/mk_cmds* usr/lib/*/pkgconfig/ss.pc e2fsprogs-1.47.3-rc1/debian/ss-dev.postinst000066400000000000000000000007041501560632700204410ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/ss-dev SYMLINK_TARGET=libss2 if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ] && symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" then rm -f "${SYMLINK}.dpkg-backup" fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/ss-dev.postrm000066400000000000000000000012461501560632700201040ustar00rootroot00000000000000#!/bin/sh # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/ss-dev SYMLINK_TARGET=libss2 if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ] then rm -f "${SYMLINK}.dpkg-backup" fi if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ] && symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" then echo "Restoring backup of $SYMLINK ..." mv "${SYMLINK}.dpkg-backup" "$SYMLINK" fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/ss-dev.preinst000066400000000000000000000007341501560632700202450ustar00rootroot00000000000000#!/bin/bash # Abort on error. set -e symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ] } SYMLINK=/usr/share/doc/ss-dev SYMLINK_TARGET=libss2 if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && [ -h "$SYMLINK" ] && symlink_match "$SYMLINK" "$SYMLINK_TARGET" then mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup" fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/tests/000077500000000000000000000000001501560632700165745ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/tests/control000066400000000000000000000001501501560632700201730ustar00rootroot00000000000000Tests: smoke Depends: e2fsprogs Tests: fuse2fs Depends: fuse2fs, fuse3 Restrictions: isolation-machine e2fsprogs-1.47.3-rc1/debian/tests/fuse2fs000077500000000000000000000017671501560632700201120ustar00rootroot00000000000000#!/bin/sh TDIR=${AUTOPKGTEST_TMP:-/tmp/fuse_dir} LOGDIR=${AUTOPKGTEST_ARTIFACTS:-/tmp/fuse_dir_log} IMG=$TDIR/test-image.img MNT=$TDIR/mnt # some autopkgtest environments may not have /etc/mtab and/or /proc/mounts EXT2FS_NO_MTAB_OK=yes export EXT2FS_NO_MTAB_OK mkdir -p $LOGDIR $TDIR $MNT /sbin/mke2fs -E root_owner -q -t ext4 -d e2fsck $IMG 8M /sbin/e2label $IMG test fuse2fs $IMG $MNT > $LOGDIR/fuse2fs.log 2>&1 if test $? -ne 0 ; then echo "fuse2fs failed; see $LOGDIR/fuse2fs.log" exit 1 fi diff e2fsck/pass1.c $MNT/pass1.c echo foobar > $MNT/testfile fusermount -u $MNT > $LOGDIR/fusermount.log 2>&1 if test $? -ne 0 ; then echo "fusermount failed; see $LOGDIR/fusermount.log" exit 1 fi /sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.log 2>&1 if test $? -ne 0 ; then echo "e2fsck failed; see $LOGDIR/e2fsck.log" exit 1 fi contents=$(/sbin/debugfs -R "cat testfile" $IMG 2> $LOGDIR/debugfs.log) if test "$contents" != foobar ; then echo "testfile does not contain expected output" exit 1 fi e2fsprogs-1.47.3-rc1/debian/tests/smoke000077500000000000000000000015641501560632700176460ustar00rootroot00000000000000#!/bin/sh TDIR=${AUTOPKGTEST_TMP:-/tmp/test_dir} LOGDIR=${AUTOPKGTEST_ARTIFACTS:-/tmp/test_dir_log} IMG=$TDIR/test-image.img # some autopkgtest environments may not have /etc/mtab and/or /proc/mounts EXT2FS_NO_MTAB_OK=yes export EXT2FS_NO_MTAB_OK mkdir -p $LOGDIR $TDIR /sbin/mke2fs -q -t ext4 -d e2fsck $IMG 8M /sbin/e2label $IMG test /sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.1.log 2>&1 if test $? -ne 0 ; then echo "First e2fsck failed; see $LOGDIR/e2fsck.1.log" exit 1 fi /sbin/resize2fs $IMG 16M > $LOGDIR/resize2fs.log 2>&1 if test $? -ne 0 ; then echo "Resize2fs failed; see $LOGDIR/e2fsck.1.log" exit 1 fi /sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.2.log 2>&1 if test $? -ne 0 ; then echo "Second e2fsck failed; see $LOGDIR/e2fsck.2.log" exit 1 fi /sbin/debugfs -R "dump pass1.c $TDIR/pass1.c" $IMG > $LOGDIR/debugfs.log 2>&1 diff $TDIR/pass1.c e2fsck/pass1.c e2fsprogs-1.47.3-rc1/debian/upstream/000077500000000000000000000000001501560632700172725ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debian/upstream/signing-key.asc000066400000000000000000000232701501560632700222120ustar00rootroot00000000000000-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 mQINBEz4F48BEADrt5DOsqL84FrVCYnI3MPZV9cEwvQSZmTyoSyU90Vl16Es7XuF y45WhR5tQG6W6iKTnQpIEcxKpTdLG8cxGwc5gOsCzmoEBgHGA23Itx7BVqkB8vSA aQDNAsQ4sFUUFBhkHa0d+N6RsrT0EHpK9gUP0paTiybqGn/yIOZ5tyw+jzN5Iae/ RLbIH5UQ8+XWV7MAFWLBahPJJTVNcASK8h/ZxvNLkIRb5SFO2oqew26VuRi3R0sT Pvue14K0JP5KsZ2HEQ8nNWyFhRbMJR32lqFNGNzPgupAdWzXKQT2R/UZ1WsMeQ1i TM+HfN3idrJ+u2STXVv1oTkKGFsyhq2gdUcv5o/tpqgkQ8F9K8rKZI/EHzh3ZU0o qYAgXECQsoS2hS1qc38EcrE3tKJsXztGpWujf8gbJivs1/pz7bEQiCxtF//Ze2dn 19CSf7r/WKTecxbkx+eupme3ThqsKWR6v6qaSCA223kiUMb8b8zpJ5+NOxhmgssl PPU5EHJaBwZrfritjgwOiEAlyjYZZ4IkA88tAimtYU3nbpn099zSfmvaD8lQUK+e NzzUlszJFGEqna4/+nGc0m2rgfbSvyWO4MQz85Fh5cSeUxiWCPNjWTJpRoPPXSIQ D+GteZ1rlvA2VmBKLSA8F7BL/lvuUrfjNF2OyLqhOI3TtGe3N+89Q1qsywARAQAB tB1UaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PokCOgQTAQgAJAIbAwIeAQIX gAIZAQUCVRr3hgULCQgHAwUVCgkICwUWAgMBAAAKCRDTb3abwRgE8LAwD/9B/KUj 0KpAe2ooXEinS380mkiGzWDJIncEynubiNm5Nl8Zo8hwtjXfagTqucUmnnu8NJ1O lwigw5/vJXpTo7maSeyJImaRZaYyzoh8Bv11t1ymbTvr5ab7ZgSGmaak3IjIM8cW vv/Wx+yf+LYS03+6GOMdGLq1mF2KgXpHBdK2Wpl/8jlOmry+wccgXBekZP7ZIF0V wNFq/q8c6zW2yHs2w6i/pkVHJJm3kyaBe+6U6njq1/HBCnlGin7iYfpxZ0d8FoiL 4CEUAHfpFP2DKTO+KJJjphZctya0nCBRzQI3Zk8a0/ITCWJr/pw77yysIRiMO0s4 BjHzzM7edlJA7dILutX8XrnAAkIOdfzWvHuLtLpEcDRP+gowYYO7PjMfb61zsP9L dXS1bDrXI2pn2SdRFmaodSBaaAaJoTj55ZbjM2Ckv4lpGYGozreav9suLrYiZIeI QRcqL1QIKM9WZPUkfbNSMiLLccOmEpKcqyauh3QJiKdT+lFpRBZY34TSI4R5EKMm dJqD/xaZ4nDpfOxbqocEXDGgstmsCgxzLrYc7lVB+1IRnTW2rFlQteFAZucq8Dwb xvkOdVY1pJo1vf8UkMPxoexMt7xSSLDQxxRzEtfQSzKLw7Iyf2eTm4OgCN8PocFI J7LaqOvyq0YvxCVGrPD9bSCU/H5CAuPJa4WuzrQgVGhlb2RvcmUgVHMnbyA8dHl0 c29AZGViaWFuLm9yZz6JAjcEEwEIACECGwMCHgECF4AFAlUa95gFCwkIBwMFFQoJ CAsFFgIDAQAACgkQ0292m8EYBPBqVg/+JrVNl+yoGyIJ3e85Ts7Ko65UQ+xM71Ad OecDUUSx3beSe/Trc76ElvzGu/zMtstu9uH8DnmnjscN1CfqpHK6Rhck69RQDCy+ c114Q8pa/bzAuWPH4vGHE5BvPZjIc67cZ3T5kHpAaew5ltZG6YhpOBRTRr55ZfO3 hHQCxOdTmqKWXB1HRXRTu7hlI4WmRpSBf9y4sVwIaraSgtNRhKb/Ff1iPHFCVdoK +UtfWJrbpJ+HpHAcboNsfC1PQZ8E6eHYiaG0EUlSrpjeCH66kBgkIkbt4RZf+R23 ZNonE8Hddw6ZR5zMxOfIbK5pBkcEUgOFogwwHL3b/lFdj0t1ggN6eRDVsk9kYYga kXypR4DYKSs484Y4OroFccw/M69gFjI3f5AIb3HQzb1cV9ocDnqJtzPLAQJTUiIb OJlFUjsvlg8romKV9lodzdS7zO/t2iQF4Hm2ThuS7R93MZEi4Z7WRgKueIBEhHm7 WBbtnWzlKZDdsILyIUn7L6WE1iT+d+zvUHz6rYY/b1b7VQzH0UXWtwzPKCyLSLuM g9q7rm5PMuaMn05zjN2gVy8rfbC7NTTo8f256YT0kmZmO5Kx9fpGYoPIMJp8aiDY fUfg2rwWkMxO6uxiEe3xCOVzgQcK7NPZS0NbhdRcrmqN3vyiVLY8Qi2a+xQjesJG RAgdhyJkESC0IFRoZW9kb3JlIFRzJ28gPHR5dHNvQGdvb2dsZS5jb20+iQI3BBMB CAAhAhsDAh4BAheABQJVGvebBQsJCAcDBRUKCQgLBRYCAwEAAAoJENNvdpvBGATw kB0P+wQj8exoDTL8/m+Wuju1CMvHty1i4eBKqzM04OdcBQI3/0zOFmub/VnJVB2L 92UhEvqclbwWsijz7G1Vr7wsUPkftCoJICYqjPpZf3BKvyGXkatrMUs0ry1xZ15Q A4f/9YuiUOykIQiROS+lUa7HqS6dkEj+/2xXheZKcnrv0pz0PayzWbonukRY7Jxe UcTAXnX1p9fM7+Y9xx5mkwwe4lN02zGextCw1C77EDGhH8GtgnhyfsFkDLjWmNg8 xjbGKvYYRU18uu0DYTj7ERrDhYy+Aft91F1ZUN9xPgyMx1uWcuyWPV57L3hdwxUX i64TV4CzMOsolytdUikw57pcjyjdn7kPJlgg+1clrtnrCsmwWQYDMfap3pTOCoj5 8YVjF+j8ngORLw1tNYZdwPVdeTmuWEv0ufgxDjQtD01yHI2PyGYtZBcTZurdYxth 1Z1+aDyi3kyi6JN8dteA4rUrTxPCI/6GspXQKOlXPKeSijBAG2KdNNNgkWPSVC7q xwhGruYYq5QA98nA8Hhe89KTwz3fbTCqr59QfEmpKaB9Uvmx6p0Bvj/zL7+N9VpN vIyxRcG9cfbBWkq18TC6cZMeHUHjwh8ttC7sq/GxdhEW4Qn4ZsvbevozAhd2sMQP FUUAH0IA1zzIL+UG1AvyQ69kWpoG8Fr9ttIZc5mYUDwL2m1KuQINBEz4GJ4BEADM e5nhgwGPH9Ti2TSBlADnsZ3ygrA1UEaTUBxPHm0IYdfqMflqbw+XkxHQqRQzYyah Bc1EBj1Fdl907ozRPnm4VzMgEzXZlN2wjmgUhz1gHZmMcCBxnC/p/FdWmEQwJLNg TsmnS/seFRw2pwkFtiDYlqXUwU1pDjTLztOMVheQpBlLOg/oHGcZB+llLNPRzCok mfNv4ShTygDpYtniQdVg57Qyriz3tvCDE+va8HL96SuCNV1vy+ZJa42KNhhMrHqY C5t7hTNaJTyk25Lmwd5aKrSZjS4goHJcP9Ry3Sit467TRGEaqOi3fO0qTiTnW2Gz 9Cq0xDCOdd3CEbLajMwxM9+UKh+65/nGzh5bYC6zSitXMC1tWUvDEQpk/tiGV8E3 c2YYbIRcCvOHBoqqIZryi4HqXFyatijEfA9yYc3J8IgmHG9Vc7rBgwdeLGQs9hfp 6IAFtmZHdupYLOUZk+HVNITESgiT6zICFoxNM0jrhkjqdK4ZtlTAiOTIidr1zVTd je0Hr/Su3H/FluG5cXOZJqqcwQak98Li/Qe4dZl0t99V1s7NafDadSAtNOyMUplt wSHWzx6PiA3oYMWbQO9S5D7/QK2scNFf7QnWFWYEcuhMlfKAodowI8swljrtgsir 7ZxRZ4YhSlBx1fgs1W09lIxmW7nufZAce/OzPgQsmQARAQABiQIfBBgBCAAJBQJM +BieAhsMAAoJENNvdpvBGATwjq0P/1ZkCLDRvERSHvLZw2dYMSVNZalQq5MO689B pcFF9M4CB0IRG+fSf7EkvTrlHnv9euhWAtucs6BITWPdtUORKl/jVcUme+QFBO/n usVKVr0G0IJrz3Db0IVAC7I0uFttuANX0oc0Z3C1J9RukGapYbKDQF9RizdiqFPP q/o700sDTnAroib1q3bDqOSrg0ewuJKpgUxLSiQ+GoZMX/8zWKMsadyguBvQl4fi RSso075/WpzjjkHgZ/TRv/hX4cBpXJLK12yv4P6mEHlwp+FXmH/KRqsyQQaQouUZ iD8tUK1hAsPB8xYrIZNSbLqsNHjLjtXsFsJU+7jSntVX2XB1nvyaoE8XNKudGoWN xbUDaBmFozvK5uBRBFogNZuw+8kCYcVi8iuIHrQMjWwL4zq7CpLxQCKfYlhXasIM p+ggwKewfOA10g5QvYCcqcFtWkIsF9dxOSkfJFY31CMQkxHKc5MF1LsGTRv5HIAm rb3XAztlmQ0936Zp8+h9DDLV5LF17oiKDYQygHFcYDgBudH78bwYw8hZ2Nkr52v6 6fHCMGUMfkC8IYP0jVokqS27Aw6IKKlCisJqnGxpXC7Nb/8LNDCKBTNpIKeENARK Xz9msd6s3gjC9ug2Ea3mrPDNmVnTkdvrLTtA0klCrxZgWml0BOjoEyB75BCe2fZ9 4VRmJHKDuQINBFLoZCgBEADGR4Xgf1j5Of7pwIzpMgz/HZxwjxibW+EC+ALwMicJ BoxTmNp5GZ41Rle7frNGRe4R3fUbpdDI9nODFREezNnTFCPYMA1B2U7hxxlcyH1N rRYkkbeSWBNVgBIZ0rBnXI1qrZjONrpTLsHX3GdAShzpYu5zyt2a7tSMhmkwzidt jmWYt3BqOH4C/CYOqUnZJhzZ44+LXT68+AcL+rqWo+cTOSDlmrvs9yJCFm4Y75A+ fd+raUZ8OhhmvHAA+IiRnHG9NrqprhVu+J4xSulfkyF8ziXl3HMC6aeHVS1F8UO+ jg7nAmgyDi6IuJznZB01KCplVDE9E/8neZfF5WMzti7DiVvkrwf4YoOcsl9tkda7 iH/ka03ZLdMYELss+lmgLnVDWDdrrJWTAY4rXEWx4UE2O03yPVKwp1Dq8eJazJrv ECDTN1U464FvSmO2Xrj7gUphOPSW2IjUYOBkFB9mMlwRKt0gDvre3M9Ix0IOKCo7 ELqalW92rSb3+eTZVen1WoCTFBWWwSPXjsDixzJjuKOCuLIieMCt63Eng2d+cCIj ymJ744efKeRJaNvF2iXBCJfQGEixlG1H4KSTjBnKGDWi0clijpJQJfJRnMLRLjP8 aA5RVzwsARZ91YQp6SKu3zFP+Z8/XwhbeeDlsmkbQ8aoRcXhdhs/pMJ02A8C6k2T pQARAQABiQIfBBgBCAAJBQJS6GQoAhsgAAoJENNvdpvBGATwSx4P/0lbTys+j9AM UEfEYjcG+C8lsqrqnK9u1bjDAQBNldg7IzeUIeQlZZF8d2RDemtxnMzs0B4MMEPK AgAltWfkezk12g1vroo1m2fKxSWEDq7pyUhRlBeggFLDWagyushIHrAXhcNvyf5n 03EZ4n8EZ03ejxN+6IWxViV14t0KuzccKPYTwLhlbNQN8YB1k0Y6ezZd8gpX4+e2 K3WD83mxpFmhhNsGqvbLsuJfXdPcWrAYpFgBF04qvYmgSdPeSid68k3Mek0eQyFj gCBA0RktKaLVWEslAXyzG1iVzTydabhFQrfA1/GMVJwDgN9HjhzZecerg88KiY03 pI5dNuzQZnt0Cs0oPcL409ZYBCiv4b6JwLxMaPAAkruqp75Eb3RRzvM8netevnt2 lMSYDR8Kt1TjPfPWH64vuSLoJ0ihSEHd4G92CN5xYVYOwBrwokJy2rj/Gaz9fZHn xOaFtWtkR9hytlqsz4qpZ71dKgsZ5LxXETygRQ0RSbMT5uKIMhRbSbOVB3gE8gwU rhWObwGL2WVaSDEM4SyaJEWyHy6+38ir7QhVTDcHQRoU0/N0Acy1AsltoJUIiaqU TdWxjplUY0GFt0OQINvEdhWtEBe4ATFK/17BKLxKk22kVbx0fMd0mR939AYIbwNi dWWyjlhmVl4Uqre/7WqbsR7nT9Sd+fbIuQENBFUa+BEBCACrJ+CRz1mNqq0Qcofc +4h9PzMBLApwGNQySQ5QCMtIu5Iz4rTT305iFFQSBFzKQSNPjm7pkAzMMs+CWaD8 0gazgiO8yvm1Fa00hGJWCxr5dbp9/w8u1hfXUSMVg6mf+D09iBLMa2a4pNJcafvp 1/Edk7VAG0q7WrhIBErHclWSh6T05jIjS81ydeO6mp8At8Vkw2oEM1RGnBGYCIq4 pPhKkQsBDRcz3h1BSrv5uPGyBvXVBJZ4n38m3iETG8jHFPS5OiHSzU4j9Q4nVutb Wk26l33VObkd4NYru95UsQ2ZGETBCW5tkLwugW7A8D2mQkTQsRLv9KO0hudY0HqX uh3pABEBAAGJA0QEGAEIAA8CGwIFAlc0FXQFCQMGa2MBKcBdIAQZAQgABgUCVRr4 EQAKCRDy+VlWlQ2Bo19UCACAVs9F065EDpeZJcH1ep6dzS/qdctES0qDl6F+CVOj v9iCTs1OkpZ9Y8gOazEfeCT5tXylyr82RV28CImAKER8tIhAi9Bvss9abXihoKpL t8en97QTBIveZ+4MXwzbJGljIuZ/Ytfz33o8T4Ojd4QLPuLq75uESnum3KcoF3LA MUCrpsoKsggp2VQHtFxgFsSd3GjIJBy+efexz5F+uM8Q1BrkZh2kwq9NZ3QdG2Kq wTVTMI6MIty5UV4re1v25VrmbCrHmWtWw2aY90HWikfMQuF0n+PWyRI1dhNaFvG7 SeMXCgdOEvhYzbQ/HBePrrV+G4fjeODu70mZZZIecDC9CRDTb3abwRgE8D0CD/0S gvkU/3GJR1ntplro3/uzZ0fcZL/Ea7ydSEGpsZVJq/nH64BDXQZSZ7UJotQdAlQ6 f72/V3r57Aix2rtF90Vu6olUtBdYEkadaSMTVkI8jjHvWeRs8iY8iOIdflikzF6b 92nGxckjSAUL6GYTnxWizw39s20K6cO4zOC/0CDhjzvtmoA0OinkWUbjWMWf9pLP 3KKfD7p+hrUzO4GrPx7mwNoj6uA1KUVynQSGa0V6OXUGjQ3ey7xDL2a32dF9PI8e UMAW4klzxX9Kbcam+NxiHtTAjMBBQ0Xt0j6irJPmsmxm8pa/D+4SlEDjsQU2q6eE UwPvKBtxdS1N1AdZWqMlQSHnGNOWkljMi9nrhyHAXgeJjbnIFryHW4/+aBLccdaL mnMwetaDRDj8EmPDZTiNHQUDCCFYoZ+Kc76kGd4UadxpW3LOg8sjmn3MYdiXXRQs /2p+Q6iFACuVSxnCz12sumynfHWiQwVGAd1FBuIgb7FuxX6FOLaybew/IMg5RzuD y9fI7Z3yHtHUcMZhhQaQvkiebbZcQlZhkZIX6Uk8csCBcClFrH9wG4NU2Jr+25oa nHoyj2c+ABd5mZ6P90UC80xSllOoH5DkCeRUBKuAZG0g+g64QKWTjwSxfY6sFd+h 210NTXaQ9iRPNVNv8cjHY0HHPzw9mQBi5CojnSgyLrkBDQRVGvi/AQgAryab03tW ugiN40UYPEASlLcR0e01ZAwrESMwCexNejebacke6fk1v4pEebBvm0fu/8GeIY78 ley9CBIoDOHzTTQMWXUBMtG5vxPzUgP5U/R0CWvXF9PgyrCOsWQjORqfIfUctQ2Q KjaSEi3jt0U9gVM84Dtj/SlyfZyJvuTy15Q3mNLEA2hiEkLCYS77+tUaXeCFl5en p2mQgBSrfnmzfCckuwa0nbmo4p6V0yreX6939c9zakMxzvWCh/SlZUyLgRkH5FOk gb3Of6lR0DHkNG9uJOMEr+f6XCbwYPDTU6EZumyVQ2WW98s0uIIU0Qmbc/EnpnYc zlbbdNS8C8aq8QARAQABiQIlBBgBCAAPAhsMBQJXNBWHBQkDBmrIAAoJENNvdpvB GATwTaMQAIumhk7daTsZ0XFfDszHwiig+Kw46KpWoCm0zZn9rPxYbU+s8+qe2E/W G4HxdwwKDMjBajsEzHgjj/p02et5LGZMKN+TT2sZX0oYhVLS8/BLrXW4Nhq9+qL1 uGUTOcctR3ebsqNTFpevtqD4jD7galFv38BIa0G8M6YdKiH5kFzWfz760L03jdNn HmnnG+x/S/5+uHj5ClpRjhzskS5Bn1gWAqvARcbst/jfwXV43o5Pprno3kfNkWEA QYVLlOY8+i4JP0xBlx7sYN+s9FE00vYZWdABKis9+OoD4qnhxVE6EbHhfoW0pFei osDr3/iWfWP1Bcrv2EPO23R7etRf5p7ERKt0p1qYPAiAJuLKzvuAreVdBszYRJSo zM8Ka+t2Be95HDSBhonI+n2ec8J2IS/dfnUOXwg+MNMcX5jOyxo0RMkhKu8+4iN3 ECB2+zA8OQswDklU3OfGlWwHKwbgcAicuj6yHQqpyheuRsNHq1wCTbkDYoGoI0mV PNl5ZjIC1RhnEzfdXww6lZ//P9KuZm9oyhaRVKhEzRP/X8Py8Q78kcnFenF0MsEg 2LB3+NMIdzFRG1rjHLYuxUD28jHVx/i6LDIVVVuNZXGupZD3m2akgnCoTQdnjmob f8VjXorvasXo5vDJWTGegQbq0vI6RmJ2fnIVj4W/H6bW8gU4GFdruQENBFUbKLcB CACwhMqbwVAiwY2NvYvSuzyPAojv7DhTEsuSvyEhLoWUUs+HvkTc6yV3OEikM4/5 ztfv5s8PFBBzi4i0WdSa4DivBe3rCyv4KUN7TFSZzTpAh/bCYBCXaU/hWAzRn1pX JrRA8dkt4KXcTzkCJV1yuwcGOojMdmU64orSgZAwykf2dc/mUkSM1pMPD2ZwC0Uc 0zm0e6gfndJu2p3O1pUgKRciJe+eKlvhXTg0l8/hKH8KvUnlWrFePTbQ/zWQq4YC lNI1rUo2Gf6zJBCwhe1Bata8dqtIpagiMCegr8069Mts9V2H2SdMIPNyWP6CP5ON UfESWt+AYZHMEFAsoJJrK/YXABEBAAGJAiUEGAEIAA8CGyAFAlc0FZsFCQMGOuQA CgkQ0292m8EYBPCanA//aA+ByDFR/JyzsWnFXwgkcR6CYRqYwq4cxIoL97RGIAdn ZFyqWAMr0TGofFrcy0U2yHKUPa6ia0QI64Lq+SzibmmVqSqq5u+d/b6ZfgvBgN6o FGwSAlwJwgXi0sK/jC+RYzw9oLWvOd+KTtKG4spNoHYKkP/Hwka9gieuuyg1hjB+ gi1b3RKKsXB7/Q0E7lkO/UqxZqyP7gCa7bYMhfrC8Y7HSsJ5QtGy9VBf4b+U4PEK FLYV4SZHh7LYlQaxSgzXarH+0u2Rrds+Kfwxwxs0k7fl7gCPj7gBhzErEcFYqhmg NGgjrxA9Zw+HXmvtdRRWBU8l/L4DPNRW4SeBkNJUAa6SfJ9fMhflzV0lx+AlP/XN Ftv2HJ7jbwUDq3vAK/dLKINrAMYOgG16pQY7HRicP63//BXqq7Sh5cbr/uvAN+aK YYoOaIo3KjMxhev2MLENS9BuN1ACUVqWO9aXJ1VmVoroiyLxFjrxOEEGNQY7Vws1 Slzhvb504g9Uo+cBy9HsXYh5BXZeaqra1qbMerN/WJPOCfQENE2g8jj9x4Mi4mZo 1gmiwCZiD+KvXfmwtZsvrLaV9FAnWDkJu8w/8yFUWeNVuvW0t5xXcZNv/Nwb2ONO vsF9NoZ1s0BZ++jraVFCtbO0yETBj4YBP0T5aFKBM3zUE6HGz3E3xgx1w0dAg4c= =oRMW -----END PGP PUBLIC KEY BLOCK----- e2fsprogs-1.47.3-rc1/debian/uuid-dev.README.Debian000066400000000000000000000016411501560632700212160ustar00rootroot00000000000000 In order to sanitize e2fsprogs to be DFSG free, the file draft-leach-uuids-guids-01.txt has been removed. It can be obtained by downloading e2fsprogs from the upstream sources. It may also be available from other sites on the network, if you do a quick web search for the string "draft-leach-uuids-guids-01". Note that debian/rules is set up to include the file on Ubuntu systems, so for people trying to build e2fsprogs on Ubuntu systems, they should start from the upstream sources, and not the Debian-expurgated sources found in the Debian repository. (n.b., for WIP releases the command "./util/gen-tarball ubuntu" will help create tar file which is appropriately named to make life easier for dpkg-buildpackage.) Since Ubuntu doesn't have the DFSG restrictions, the documentation which has been removed for Debian's DFSG license purity shouldn't be denied to Ubuntu users. Theodore Ts'o October 3, 2006 e2fsprogs-1.47.3-rc1/debian/uuid-dev.install000066400000000000000000000001611501560632700205420ustar00rootroot00000000000000usr/lib/*/libuuid.so usr/lib/*/libuuid.a usr/include/uuid/* usr/share/man/man3/uuid* usr/lib/*/pkgconfig/uuid.pc e2fsprogs-1.47.3-rc1/debian/uuid-runtime.install000066400000000000000000000001271501560632700214510ustar00rootroot00000000000000usr/bin/uuidgen usr/sbin/uuidd usr/share/man/man8/uuidd.* usr/share/man/man1/uuidgen.* e2fsprogs-1.47.3-rc1/debian/uuid-runtime.lintian-overrides000066400000000000000000000001151501560632700234360ustar00rootroot00000000000000uuid-runtime: command-with-path-in-maintainer-script prerm:5 /usr/sbin/uuidd e2fsprogs-1.47.3-rc1/debian/uuid-runtime.postinst000066400000000000000000000005011501560632700216620ustar00rootroot00000000000000#!/bin/sh set -e if ! getent group | grep -q libuuid; then groupadd -f -K GID_MIN=1 -K GID_MAX=999 libuuid fi if ! getent passwd | grep -q libuuid; then useradd -d /var/lib/libuuid -K UID_MIN=1 -K UID_MAX=499 -g libuuid libuuid fi chown libuuid:libuuid /usr/sbin/uuidd chmod 6755 /usr/sbin/uuidd #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/uuid-runtime.postrm000066400000000000000000000001311501560632700213220ustar00rootroot00000000000000#!/bin/sh set -e if [ "$1" = purge ] then rm -rf /var/run/uuidd fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/uuid-runtime.prerm000066400000000000000000000001451501560632700211300ustar00rootroot00000000000000#! /bin/sh set -e if [ -x /usr/sbin/uuidd ] then /usr/sbin/uuidd -k || true fi #DEBHELPER# exit 0 e2fsprogs-1.47.3-rc1/debian/uuid-runtime.shlibs.local000066400000000000000000000000401501560632700223520ustar00rootroot00000000000000libuuid 1 libuuid1 (> 1.40.3-1) e2fsprogs-1.47.3-rc1/debian/watch000066400000000000000000000002771501560632700164710ustar00rootroot00000000000000version=4 opts="pgpsigurlmangle=s%$%.asc%" \ http://sf.net/e2fsprogs/e2fsprogs-([0-9].+)\.tar\.gz #ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/e2fsprogs-([0-9].+)\.tar\.gz e2fsprogs-1.47.3-rc1/debugfs/000077500000000000000000000000001501560632700156275ustar00rootroot00000000000000e2fsprogs-1.47.3-rc1/debugfs/Android.bp000066400000000000000000000032541501560632700175360ustar00rootroot00000000000000// Copyright 2017 The Android Open Source Project //######################## // Build the debugfs binary package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "external_e2fsprogs_license" // to get the below license kinds: // SPDX-license-identifier-GPL // SPDX-license-identifier-GPL-2.0 default_applicable_licenses: ["external_e2fsprogs_license"], } cc_defaults { name: "debugfs-defaults", defaults: ["e2fsprogs-defaults"], srcs: [ "debug_cmds.c", "debugfs.c", "util.c", "ncheck.c", "icheck.c", "ls.c", "lsdel.c", "dump.c", "set_fields.c", "logdump.c", "htree.c", "unused.c", "e2freefrag.c", "filefrag.c", "extent_cmds.c", "extent_inode.c", "zap.c", "quota.c", "xattrs.c", "journal.c", "revoke.c", "recovery.c", "do_journal.c", ], cflags: [ "-DDEBUGFS", ], include_dirs: [ "external/e2fsprogs/misc", "external/e2fsprogs/e2fsck", ], } debugfs_libs = [ "libext2_misc", "libext2fs", "libext2_blkid", "libext2_uuid", "libext2_ss", "libext2_quota", "libext2_com_err", "libext2_e2p", "libext2_support", ] cc_binary { name: "debugfs", host_supported: true, defaults: ["debugfs-defaults"], shared_libs: debugfs_libs, } cc_binary { name: "debugfs_static", static_executable: true, host_supported: true, defaults: ["debugfs-defaults"], static_libs: debugfs_libs, } e2fsprogs-1.47.3-rc1/debugfs/Makefile.in000066400000000000000000000565031501560632700177050ustar00rootroot00000000000000# # Standard e2fsprogs prologue.... # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ top_builddir = .. my_dir = debugfs INSTALL = @INSTALL@ MKDIR_P = @MKDIR_P@ @MCONFIG@ PROGS= debugfs MANPAGES= debugfs.8 MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir)/../lib/ss ../lib/ss/mk_cmds DEBUG_OBJS= debug_cmds.o debugfs.o util.o ncheck.o icheck.o ls.o \ lsdel.o dump.o set_fields.o logdump.o htree.o unused.o e2freefrag.o \ filefrag.o extent_cmds.o extent_inode.o zap.o create_inode.o \ create_inode_libarchive.o quota.o xattrs.o journal.o revoke.o \ recovery.o do_journal.o do_orphan.o RO_DEBUG_OBJS= ro_debug_cmds.o ro_debugfs.o util.o ncheck.o icheck.o ls.o \ lsdel.o logdump.o htree.o e2freefrag.o filefrag.o extent_cmds.o \ extent_inode.o quota.o xattrs.o do_orphan.o SRCS= debug_cmds.c $(srcdir)/debugfs.c $(srcdir)/util.c $(srcdir)/ls.c \ $(srcdir)/ncheck.c $(srcdir)/icheck.c $(srcdir)/lsdel.c \ $(srcdir)/dump.c $(srcdir)/set_fields.c ${srcdir}/logdump.c \ $(srcdir)/htree.c $(srcdir)/unused.c ${srcdir}/../misc/e2freefrag.c \ $(srcdir)/filefrag.c $(srcdir)/extent_inode.c $(srcdir)/zap.c \ $(srcdir)/../misc/create_inode.c \ $(srcdir)/../misc/create_inode_libarchive.c $(srcdir)/xattrs.c \ $(srcdir)/quota.c $(srcdir)/journal.c $(srcdir)/../e2fsck/revoke.c \ $(srcdir)/../e2fsck/recovery.c $(srcdir)/do_journal.c \ $(srcdir)/do_orphan.c LIBS= $(LIBSUPPORT) $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \ $(LIBUUID) $(LIBMAGIC) $(SYSLIBS) $(LIBARCHIVE) DEPLIBS= $(DEPLIBSUPPORT) $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \ $(DEPLIBBLKID) $(DEPLIBUUID) STATIC_LIBS= $(STATIC_LIBSUPPORT) $(STATIC_LIBEXT2FS) $(STATIC_LIBSS) \ $(STATIC_LIBCOM_ERR) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \ $(STATIC_LIBE2P) $(LIBMAGIC) $(SYSLIBS) STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBSS) \ $(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBUUID) \ $(DEPSTATIC_LIBE2P) # This nastiness is needed because of jfs_user.h hackery; when we finally # clean up this mess, we should be able to drop it LOCAL_CFLAGS = -I$(srcdir)/../e2fsck -DDEBUGFS DEPEND_CFLAGS = -I$(srcdir) .c.o: $(E) " CC $<" $(Q) $(CC) -c $(ALL_CFLAGS) $< -o $@ $(Q) $(CHECK_CMD) $(ALL_CFLAGS) $< $(Q) $(CPPCHECK_CMD) $(CPPFLAGS) $< all:: $(PROGS) $(MANPAGES) debugfs: $(DEBUG_OBJS) $(DEPLIBS) $(E) " LD $@" $(Q) $(CC) $(ALL_LDFLAGS) -o debugfs $(DEBUG_OBJS) $(LIBS) debugfs.static: $(DEBUG_OBJS) $(STATIC_DEPLIBS) $(E) " LD $@" $(Q) $(CC) $(LDFLAGS_STATIC) -o debugfs.static $(DEBUG_OBJS) \ $(STATIC_LIBS) $(READLINE_LIB) debugfs.static-libs: $(DEBUG_OBJS) $(STATIC_DEPLIBS) $(E) " LD $@" $(Q) $(CC) -o debugfs.static-libs $(DEBUG_OBJS) \ $(STATIC_LIBS) $(READLINE_LIB) rdebugfs: $(RO_DEBUG_OBJS) $(DEPLIBS) $(E) " LD $@" $(Q) $(CC) $(ALL_LDFLAGS) -o rdebugfs $(RO_DEBUG_OBJS) $(LIBS) debug_cmds.c debug_cmds.h: debug_cmds.ct $(E) " MK_CMDS $@" $(Q) $(MK_CMDS) $(srcdir)/debug_cmds.ct extent_cmds.c extent_cmds.h: extent_cmds.ct $(E) " MK_CMDS $@" $(Q) $(MK_CMDS) $(srcdir)/extent_cmds.ct ro_debug_cmds.c ro_debug_cmds.h: ro_debug_cmds.ct $(E) " MK_CMDS $@" $(Q) $(MK_CMDS) $(srcdir)/ro_debug_cmds.ct ro_debugfs.o: debugfs.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) $< -DREAD_ONLY -o $@ e2freefrag.o: $(srcdir)/../misc/e2freefrag.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) $< -o $@ recovery.o: $(srcdir)/../e2fsck/recovery.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \ $(srcdir)/../e2fsck/recovery.c -o $@ revoke.o: $(srcdir)/../e2fsck/revoke.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \ $(srcdir)/../e2fsck/revoke.c -o $@ create_inode.o: $(srcdir)/../misc/create_inode.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \ $(srcdir)/../misc/create_inode.c -o $@ create_inode_libarchive.o: $(srcdir)/../misc/create_inode_libarchive.c $(E) " CC $@" $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \ $(srcdir)/../misc/create_inode_libarchive.c -o $@ debugfs.8: $(DEP_SUBSTITUTE) $(srcdir)/debugfs.8.in $(E) " SUBST $@" $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/debugfs.8.in debugfs.8 installdirs: $(E) " MKDIR_P $(root_sbindir) $(man8dir)" $(Q) $(MKDIR_P) $(DESTDIR)$(root_sbindir) \ $(DESTDIR)$(man8dir) install: $(PROGS) $(MANPAGES) installdirs $(Q) for i in $(PROGS); do \ echo " INSTALL $(root_sbindir)/$$i"; \ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \ done $(Q) for i in $(MANPAGES); do \ for j in $(COMPRESS_EXT); do \ $(RM) -f $(DESTDIR)$(man8dir)/$$i.$$j; \ done; \ echo " INSTALL_DATA $(man8dir)/$$i"; \ $(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \ done install-strip: install $(Q) for i in $(PROGS); do \ echo " STRIP $(root_sbindir)/$$i"; \ $(STRIP) $(DESTDIR)$(root_sbindir)/$$i; \ done uninstall: for i in $(PROGS); do \ $(RM) -f $(DESTDIR)$(root_sbindir)/$$i; \ done for i in $(MANPAGES); do \ $(RM) -f $(DESTDIR)$(man8dir)/$$i; \ done clean:: $(RM) -f $(PROGS) debugfs.8 \#* *.s *.o *.a *~ debug_cmds.c \ extent_cmds.c ro_debug_cmds.c core rdebugfs debugfs.static \ debugfs.static-libs tst_set_fields mostlyclean: clean distclean: clean $(RM) -f debug_cmds.c .depend Makefile $(srcdir)/TAGS \ $(srcdir)/Makefile.in.old $(srcdir)/recovery.c \ $(srcdir)/revoke.c tst_set_fields: set_fields.c util.c $(E) " LD $@" $(Q) $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(SYSLIBS) -DUNITTEST \ -o tst_set_fields $(srcdir)/set_fields.c $(srcdir)/util.c $(LIBS) fullcheck check:: tst_set_fields $(TESTENV) ./tst_set_fields # +++ Dependency line eater +++ # # Makefile dependencies follow. This must be the last section in # the Makefile.in file # debug_cmds.o: debug_cmds.c $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h debugfs.o: $(srcdir)/debugfs.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/version.h \ $(srcdir)/../e2fsck/jfs_user.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \ $(top_srcdir)/lib/ext2fs/compiler.h $(top_srcdir)/lib/support/plausible.h util.o: $(srcdir)/util.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(srcdir)/debugfs.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/ext2fs/ext2_io.h \ $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h ls.o: $(srcdir)/ls.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h ncheck.o: $(srcdir)/ncheck.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h icheck.o: $(srcdir)/icheck.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h lsdel.o: $(srcdir)/lsdel.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h dump.o: $(srcdir)/dump.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h set_fields.o: $(srcdir)/set_fields.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h logdump.o: $(srcdir)/logdump.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/../e2fsck/jfs_user.h \ $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \ $(top_srcdir)/lib/ext2fs/fast_commit.h htree.o: $(srcdir)/htree.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h unused.o: $(srcdir)/unused.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h e2freefrag.o: $(srcdir)/../misc/e2freefrag.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/e2freefrag.h \ $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h filefrag.o: $(srcdir)/filefrag.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h extent_inode.o: $(srcdir)/extent_inode.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h zap.o: $(srcdir)/zap.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h create_inode.o: $(srcdir)/../misc/create_inode.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/fiemap.h \ $(srcdir)/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \ $(top_srcdir)/lib/support/nls-enable.h \ $(srcdir)/../misc/create_inode_libarchive.h create_inode_libarchive.o: $(srcdir)/../misc/create_inode_libarchive.c \ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \ $(srcdir)/../misc/create_inode.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/ext2fs/ext2_io.h \ $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h \ $(srcdir)/../misc/create_inode_libarchive.h \ $(top_srcdir)/lib/support/nls-enable.h xattrs.o: $(srcdir)/xattrs.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/support/cstring.h \ $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h quota.o: $(srcdir)/quota.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h journal.o: $(srcdir)/journal.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/journal.h \ $(srcdir)/../e2fsck/jfs_user.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \ $(top_srcdir)/lib/ext2fs/compiler.h revoke.o: $(srcdir)/../e2fsck/revoke.c $(srcdir)/../e2fsck/jfs_user.h \ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \ $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \ $(top_srcdir)/lib/ext2fs/compiler.h recovery.o: $(srcdir)/../e2fsck/recovery.c $(srcdir)/../e2fsck/jfs_user.h \ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \ $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \ $(top_srcdir)/lib/ext2fs/compiler.h do_journal.o: $(srcdir)/do_journal.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h \ $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \ $(srcdir)/journal.h $(srcdir)/../e2fsck/jfs_user.h do_orphan.o: $(srcdir)/do_orphan.c $(top_builddir)/lib/config.h \ $(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \ $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \ $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \ $(top_srcdir)/lib/support/dqblk_v2.h \ $(top_srcdir)/lib/support/quotaio_tree.h e2fsprogs-1.47.3-rc1/debugfs/debug_cmds.ct000066400000000000000000000127671501560632700202700ustar00rootroot00000000000000# # Copyright (C) 1993 Theodore Ts'o. This file may be redistributed # under the terms of the GNU Public License. # command_table debug_cmds; request do_show_debugfs_params, "Show debugfs parameters", show_debugfs_params, params; request do_open_filesys, "Open a filesystem", open_filesys, open; request do_close_filesys, "Close the filesystem", close_filesys, close; request do_freefrag, "Report free space fragmentation", freefrag, e2freefrag; request do_features, "Set/print superblock features", feature, features; request do_dirty_filesys, "Mark the filesystem as dirty", dirty_filesys, dirty; request do_init_filesys, "Initialize a filesystem (DESTROYS DATA)", init_filesys; request do_show_super_stats, "Show superblock statistics", show_super_stats, stats; request do_ncheck, "Do inode->name translation", ncheck; request do_icheck, "Do block->inode translation", icheck; request do_chroot, "Change root directory", change_root_directory, chroot; request do_change_working_dir, "Change working directory", change_working_directory, cd; request do_list_dir, "List directory", list_directory, ls; request do_stat, "Show inode information ", show_inode_info, stat; request do_dump_extents, "Dump extents information ", dump_extents, extents, ex; request do_blocks, "Dump blocks used by an inode ", blocks; request do_filefrag, "Report fragmentation information for an inode", filefrag; request do_link, "Create directory link", link, ln; request do_unlink, "Delete a directory link", unlink; request do_mkdir, "Create a directory", mkdir; request do_rmdir, "Remove a directory", rmdir; request do_rm, "Remove a file (unlink and kill_file, if appropriate)", rm; request do_kill_file, "Deallocate an inode and its blocks", kill_file; request do_copy_inode, "Copy the inode structure", copy_inode; request do_clri, "Clear an inode's contents", clri; request do_freei, "Clear an inode's in-use flag", freei; request do_seti, "Set an inode's in-use flag", seti; request do_testi, "Test an inode's in-use flag", testi; request do_freeb, "Clear a block's in-use flag", freeb; request do_setb, "Set a block's in-use flag", setb; request do_testb, "Test a block's in-use flag", testb; request do_modify_inode, "Modify an inode by structure", modify_inode, mi; request do_find_free_block, "Find free block(s)", find_free_block, ffb; request do_find_free_inode, "Find free inode(s)", find_free_inode, ffi; request do_print_working_directory, "Print current working directory", print_working_directory, pwd; request do_expand_dir, "Expand directory", expand_dir, expand; request do_mknod, "Create a special file", mknod; request do_lsdel, "List deleted inodes", list_deleted_inodes, lsdel; request do_undel, "Undelete file", undelete, undel; request do_write, "Copy a file from your native filesystem", write; request do_dump, "Dump an inode out to a file", dump_inode, dump; request do_cat, "Dump an inode out to stdout", cat; request do_lcd, "Change the current directory on your native filesystem", lcd; request do_rdump, "Recursively dump a directory to the native filesystem", rdump; request do_set_super, "Set superblock value", set_super_value, ssv; request do_set_inode, "Set inode field", set_inode_field, sif; request do_set_block_group_descriptor, "Set block group descriptor field", set_block_group, set_bg; request do_logdump, "Dump the contents of the journal", logdump; request do_htree_dump, "Dump a hash-indexed directory", htree_dump, htree; request do_dx_hash, "Calculate the directory hash of a filename", dx_hash, hash; request do_dirsearch, "Search a directory for a particular filename", dirsearch; request do_bmap, "Calculate the logical->physical block mapping for an inode", bmap; request do_fallocate, "Allocate uninitialized blocks to an inode", fallocate; request do_punch, "Punch (or truncate) blocks from an inode by deallocating them", punch, truncate; request do_symlink, "Create a symbolic link", symlink; request do_imap, "Calculate the location of an inode", imap; request do_dump_unused, "Dump unused blocks", dump_unused; request do_set_current_time, "Set current time to use when setting filesystem fields", set_current_time; request do_supported_features, "Print features supported by this version of e2fsprogs", supported_features; request do_dump_mmp, "Dump MMP information", dump_mmp; request do_set_mmp_value, "Set MMP value", set_mmp_value, smmp; request do_extent_open, "Open inode for extent manipulation", extent_open, eo; request do_zap_block, "Zap block: fill with 0, pattern, flip bits etc.", zap_block, zap; request do_block_dump, "Dump contents of a block", block_dump, bdump, bd; request do_list_xattr, "List extended attributes of an inode", ea_list; request do_get_xattr, "Get an extended attribute of an inode", ea_get; request do_set_xattr, "Set an extended attribute of an inode", ea_set; request do_rm_xattr, "Remove an extended attribute of an inode", ea_rm; request do_list_quota, "List quota", list_quota, lq; request do_get_quota, "Get quota", get_quota, gq; request do_idump, "Dump the inode structure in hex", inode_dump, idump, id; request do_journal_open, "Open the journal", journal_open, jo; request do_journal_close, "Close the journal", journal_close, jc; request do_journal_write, "Write a transaction to the journal", journal_write, jw; request do_journal_run, "Recover the journal", journal_run, jr; request do_orphan_inodes, "List the orphan inodes on the file system", orphan_inodes, orphan; end; e2fsprogs-1.47.3-rc1/debugfs/debugfs.8.in000066400000000000000000000565001501560632700177520ustar00rootroot00000000000000.\" -*- nroff -*- .\" Copyright 1993, 1994, 1995 by Theodore Ts'o. All Rights Reserved. .\" This file may be copied under the terms of the GNU Public License. .\" .TH DEBUGFS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@" .SH NAME debugfs \- ext2/ext3/ext4 file system debugger .SH SYNOPSIS .B debugfs [ .B \-DVwcin ] [ .B \-b blocksize ] [ .B \-s superblock ] [ .B \-f cmd_file ] [ .B \-R request ] [ .B \-d data_source_device ] [ .B \-z .I undo_file ] [ device ] .SH DESCRIPTION The .B debugfs program is an interactive file system debugger. It can be used to examine and change the state of an ext2, ext3, or ext4 file system. .PP .I device is a block device (e.g., /dev/sdXX) or a file containing the file system. .SH OPTIONS .TP .I \-w Specifies that the file system should be opened in read-write mode. Without this option, the file system is opened in read-only mode. .TP .I \-n Disables metadata checksum verification. This should only be used if you believe the metadata to be correct despite the complaints of e2fsprogs. .TP .I \-c Specifies that the file system should be opened in catastrophic mode, in which the inode and group bitmaps are not read initially. This can be useful for file systems with significant corruption, but because of this, catastrophic mode forces the file system to be opened read-only. .TP .I \-i Specifies that .I device represents an ext2 image file created by the .B e2image program. Since the ext2 image file only contains the superblock, block group descriptor, block and inode allocation bitmaps, and the inode table, many .B debugfs commands will not function properly. .B Warning: no safety checks are in place, and .B debugfs may fail in interesting ways if commands such as .IR ls ", " dump , etc. are tried without specifying the .I data_source_device using the .I \-d option. .B debugfs is a debugging tool. It has rough edges! .TP .I \-d data_source_device Used with the .I \-i option, specifies that .I data_source_device should be used when reading blocks not found in the ext2 image file. This includes data, directory, and indirect blocks. .TP .I \-b blocksize Forces the use of the given block size (in bytes) for the file system, rather than detecting the correct block size automatically. (This option is rarely needed; it is used primarily when the file system is extremely badly damaged/corrupted.) .TP .I \-s superblock Causes the file system superblock to be read from the given block number, instead of using the primary superblock (located at an offset of 1024 bytes from the beginning of the file system). If you specify the .I \-s option, you must also provide the blocksize of the file system via the .I \-b option. (This option is rarely needed; it is used primarily when the file system is extremely badly damaged/corrupted.) .TP .I \-f cmd_file Causes .B debugfs to read in commands from .IR cmd_file , and execute them. When .B debugfs is finished executing those commands, it will exit. .TP .I \-D Causes .B debugfs to open the device using Direct I/O, bypassing the buffer cache. Note that some Linux devices, notably device mapper as of this writing, do not support Direct I/O. .TP .I -R request Causes .B debugfs to execute the single command .IR request , and then exit. .TP .I \-V print the version number of .B debugfs and exit. .TP .BI \-z " undo_file" Before overwriting a file system block, write the old contents of the block to an undo file. This undo file can be used with .BR e2undo (8) to restore the old contents of the file system should something go wrong. If the empty string is passed as the undo_file argument, the undo file will be written to a file named debugfs-\fIdevice\fR.e2undo in the directory specified via the \fIE2FSPROGS_UNDO_DIR\fR environment variable. WARNING: The undo file cannot be used to recover from a power or system crash. .SH SPECIFYING FILES Many .B debugfs commands take a .I filespec as an argument to specify an inode (as opposed to a pathname) in the file system which is currently opened by .BR debugfs . The .I filespec argument may be specified in two forms. The first form is an inode number surrounded by angle brackets, e.g., .IR <2> . The second form is a pathname; if the pathname is prefixed by a forward slash ('/'), then it is interpreted relative to the root of the file system which is currently opened by .BR debugfs . If not, the pathname is interpreted relative to the current working directory as maintained by .BR debugfs . This may be modified by using the .B debugfs command .IR cd . .\" .\" .\" .SH COMMANDS This is a list of the commands which .B debugfs supports. .TP .BI blocks " filespec" Print the blocks used by the inode .I filespec to stdout. .TP .BI bmap " [ \-a ] filespec logical_block [physical_block]" Print or set the physical block number corresponding to the logical block number .I logical_block in the inode .IR filespec . If the .I \-a flag is specified, try to allocate a block if necessary. .TP .BI block_dump " '[ \-x ] [\-f filespec] block_num" Dump the file system block given by .I block_num in hex and ASCII format to the console. If the .I \-f option is specified, the block number is relative to the start of the given .BR filespec . If the .I \-x option is specified, the block is interpreted as an extended attribute block and printed to show the structure of extended attribute data structures. .TP .BI cat " filespec" Dump the contents of the inode .I filespec to stdout. .TP .BI cd " filespec" Change the current working directory to .IR filespec . .TP .BI chroot " filespec" Change the root directory to be the directory .IR filespec . .TP .BI close " [\-a]" Close the currently open file system. If the .I \-a option is specified, write out any changes to the superblock and block group descriptors to all of the backup superblocks, not just to the master superblock. .TP .BI clri " filespec" Clear the contents of the inode .IR filespec . .TP .BI copy_inode " source_inode destination_inode" Copy the contents of the inode structure in .I source_inode and use it to overwrite the inode structure at .IR destination_inode . .TP .BI dirsearch " filespec filename" Search the directory .I filespec for .IR filename . .TP .BI dirty " [\-clean]" Mark the file system as dirty, so that the superblocks will be written on exit. Additionally, clear the superblock's valid flag, or set it if .I -clean is specified. .TP .BI dump " [\-p] filespec out_file" Dump the contents of the inode .I filespec to the output file .IR out_file . If the .I -p option is given set the owner, group and permissions information on .I out_file to match .IR filespec . .TP .BI dump_mmp " [mmp_block]" Display the multiple-mount protection (mmp) field values. If .I mmp_block is specified then verify and dump the MMP values from the given block number, otherwise use the .B s_mmp_block field in the superblock to locate and use the existing MMP block. .TP .BI dx_hash " [\-cv] [\-h hash_alg] [\-s hash_seed] filename" Calculate the directory hash of .IR filename . The .I \-c option will casefold the filename before calculating the hash. The .I \-v option will make the .B dx_hash command more verbose and print the hash algorithm and hash seed to calculate the hash. If a file system is open, use the hash_seed and default hash_algorithm used by the file system, although these can be overridden by the .I \-h and .I \-s options. The hash algorithm specified with .I \-h may be .BR legacy , " half_md4" ", or " tea . The hash seed specified with .I \-s must be in UUID format. .TP .BI dump_extents " [\-n] [\-l] filespec" Dump the extent tree of the inode .IR filespec . The .I -n flag will cause .B dump_extents to only display the interior nodes in the extent tree. The .I \-l flag will cause .B dump_extents to only display the leaf nodes in the extent tree. .IP (Please note that the length and range of blocks for the last extent in an interior node is an estimate by the extents library functions, and is not stored in file system data structures. Hence, the values displayed may not necessarily by accurate and does not indicate a problem or corruption in the file system.) .TP .B dump_unused Dump unused blocks which contain non-null bytes. .TP .BI ea_get " [\-f outfile]|[\-xVC] [\-r] filespec attr_name" Retrieve the value of the extended attribute .I attr_name in the file .I filespec and write it either to stdout or to \fIoutfile\fR. .TP .BI ea_list " filespec" List the extended attributes associated with the file .I filespec to standard output. .TP .BI ea_set " [\-f infile] [\-r] filespec attr_name attr_value" Set the value of the extended attribute .I attr_name in the file .I filespec to the string value .I attr_value or read it from \fIinfile\fR. .TP .BI ea_rm " filespec attr_names..." Remove the extended attribute .I attr_name from the file \fIfilespec\fR. .TP .BI expand_dir " filespec" Expand the directory .IR filespec . .TP .BI fallocate " filespec start_block [end_block]" Allocate and map uninitialized blocks into \fIfilespec\fR between logical block \fIstart_block\fR and \fIend_block\fR, inclusive. If \fIend_block\fR is not supplied, this function maps until it runs out of free disk blocks or the maximum file size is reached. Existing mappings are left alone. .TP .BI feature " [fs_feature] [\-fs_feature] ..." Set or clear various file system features in the superblock. After setting or clearing any file system features that were requested, print the current state of the file system feature set. .TP .BI filefrag " [\-dvr] filespec" Print the number of contiguous extents in .IR filespec . If .I filespec is a directory and the .I \-d option is not specified, .I filefrag will print the number of contiguous extents for each file in the directory. The .I \-v option will cause .I filefrag print a tabular listing of the contiguous extents in the file. The .I \-r option will cause .I filefrag to do a recursive listing of the directory. .TP .BI find_free_block " [count [goal]]" Find the first .I count free blocks, starting from .I goal and allocate it. Also available as .BR ffb . .TP .BI find_free_inode " [dir [mode]]" Find a free inode and allocate it. If present, .I dir specifies the inode number of the directory which the inode is to be located. The second optional argument .I mode specifies the permissions of the new inode. (If the directory bit is set on the mode, the allocation routine will function differently.) Also available as .BR ffi . .TP .BI freeb " block [count]" Mark the block number .I block as not allocated. If the optional argument .I count is present, then .I count blocks starting at block number .I block will be marked as not allocated. .TP .BI freefrag " [\-c chunk_kb]" Report free space fragmentation on the currently open file system. If the .I \-c option is specified then the filefrag command will print how many free chunks of size .I chunk_kb can be found in the file system. The chunk size must be a power of two and be larger than the file system block size. .TP .BI freei " filespec [num]" Free the inode specified by .IR filespec . If .I num is specified, also clear num\-1 inodes after the specified inode. .TP .BI get_quota " quota_type id" Display quota information for given quota type (user, group, or project) and ID. .TP .B help Print a list of commands understood by .BR debugfs . .TP .BI htree_dump " filespec" Dump the hash-indexed directory .IR filespec , showing its tree structure. .TP .BI icheck " block ..." Print a listing of the inodes which use the one or more blocks specified on the command line. .TP .BI inode_dump " [\-b]|[\-e]|[\-x] filespec" Print the contents of the inode data structure in hex and ASCII format. The .I \-b option causes the command to only dump the contents of the .B i_blocks array. The .I \-e option causes the command to only dump the contents of the extra inode space, which is used to store in-line extended attributes. The .I \-x option causes the command to dump the extra inode space interpreted and extended attributes. This is useful to debug corrupted inodes containing extended attributes. .TP .BI imap " filespec" Print the location of the inode data structure (in the inode table) of the inode .IR filespec . .TP .BI init_filesys " device blocksize" Create an ext2 file system on .I device with device size .IR blocksize . Note that this does not fully initialize all of the data structures; to do this, use the .BR mke2fs (8) program. This is just a call to the low-level library, which sets up the superblock and block descriptors. .TP .B journal_close Close the open journal. .TP .BI journal_open " [\-c] [\-v ver] [\-f ext_jnl]" Opens the journal for reading and writing. Journal checksumming can be enabled by supplying \fI\-c\fR; checksum formats 2 and 3 can be selected with the \fI\-v\fR option. An external journal can be loaded from \fIext_jnl\fR. .TP .B journal_run Replay all transactions in the open journal. .TP .BI journal_write " [\-b blocks] [\-r revoke] [\-c] file" Write a transaction to the open journal. The list of blocks to write should be supplied as a comma-separated list in \fIblocks\fR; the blocks themselves should be readable from \fIfile\fR. A list of blocks to revoke can be supplied as a comma-separated list in \fIrevoke\fR. By default, a commit record is written at the end; the \fI\-c\fR switch writes an uncommitted transaction. .TP .BI kill_file " filespec" Deallocate the inode .I filespec and its blocks. Note that this does not remove any directory entries (if any) to this inode. See the .BR rm (1) command if you wish to unlink a file. .TP .BI lcd " directory" Change the current working directory of the .B debugfs process to .I directory on the native file system. .TP .BI list_quota " quota_type" Display quota information for given quota type (user, group, or project). .TP .BI ln " filespec dest_file" Create a link named .I dest_file which is a hard link to .IR filespec . Note this does not adjust the inode reference counts. .TP .BI logdump " [\-acsOS] [\-b block] [\-n num_trans ] [\-i filespec] [\-f journal_file] [output_file]" Dump the contents of the ext3 journal. By default, dump the journal inode as specified in the superblock. However, this can be overridden with the .I \-i option, which dumps the journal from the internal inode given by .IR filespec . A regular file containing journal data can be specified using the .I \-f option. Finally, the .I \-s option utilizes the backup information in the superblock to locate the journal. .IP The .I \-S option causes .B logdump to print the contents of the journal superblock. .IP The .I \-a option causes the .B logdump to print the contents of all of the descriptor blocks. The .I \-b option causes .B logdump to print all journal records that refer to the specified block. The .I \-c option will print out the contents of all of the data blocks selected by the .I \-a and .I \-b options. .IP The .I \-O option causes logdump to display old (checkpointed) journal entries. This can be used to try to track down journal problems even after the journal has been replayed. .IP The .I \-n option causes .B logdump to continue past a journal block which is missing a magic number. Instead, it will stop only when the entire log is printed or after .I num_trans transactions. .TP .BI ls " [\-l] [\-c] [\-d] [\-p] [\-r] filespec" Print a listing of the files in the directory .IR filespec . The .I \-c flag causes directory block checksums (if present) to be displayed. The .I \-d flag will list deleted entries in the directory. The .I \-l flag will list files using a more verbose format. The .I \-p flag will list the files in a format which is more easily parsable by scripts, as well as making it more clear when there are spaces or other non-printing characters at the end of filenames. The .I \-r flag will force the printing of the filename, even if it is encrypted. .TP .BI list_deleted_inodes " [limit]" List deleted inodes, optionally limited to those deleted within .I limit seconds ago. Also available as .BR lsdel . .IP This command was useful for recovering from accidental file deletions for ext2 file systems. Unfortunately, it is not useful for this purpose if the files were deleted using ext3 or ext4, since the inode's data blocks are no longer available after the inode is released. .TP .BI modify_inode " filespec" Modify the contents of the inode structure in the inode .IR filespec . Also available as .BR mi . .TP .BI mkdir " filespec" Make a directory. .TP .BI mknod " filespec [p|[[c|b] major minor]]" Create a special device file (a named pipe, character or block device). If a character or block device is to be made, the .I major and .I minor device numbers must be specified. .TP .BI ncheck " [\-c] inode_num ..." Take the requested list of inode numbers, and print a listing of pathnames to those inodes. The .I -c flag will enable checking the file type information in the directory entry to make sure it matches the inode's type. .TP .BI open " [\-weficD] [\-b blocksize] [\-d image_filename] [\-s superblock] [\-z undo_file] device" Open a file system for editing. The .I \-f flag forces the file system to be opened even if there are some unknown or incompatible file system features which would normally prevent the file system from being opened. The .I \-e flag causes the file system to be opened in exclusive mode. The .IR \-b ", " \-c ", " \-d ", " \-i ", " \-s ", " \-w ", and " \-D options behave the same as the command-line options to .BR debugfs . .TP .B orphan_inodes List the orphan inodes in the file system. .TP .BI punch " filespec start_blk [end_blk]" Delete the blocks in the inode ranging from .I start_blk to .IR end_blk . If .I end_blk is omitted then this command will function as a truncate command; that is, all of the blocks starting at .I start_blk through to the end of the file will be deallocated. .TP .BI symlink " filespec target" Make a symbolic link. .TP .B pwd Print the current working directory. .TP .B quit Quit .B debugfs .TP .BI rdump " directory[...] destination" Recursively dump .IR directory , or multiple .IR directories , and all its contents (including regular files, symbolic links, and other directories) into the named .IR destination , which should be an existing directory on the native file system. .TP .BI rm " pathname" Unlink .IR pathname . If this causes the inode pointed to by .I pathname to have no other references, deallocate the file. This command functions as the unlink() system call. .TP .BI rmdir " filespec" Remove the directory .IR filespec . .TP .BI setb " block [count]" Mark the block number .I block as allocated. If the optional argument .I count is present, then .I count blocks starting at block number .I block will be marked as allocated. .TP .BI set_block_group " bgnum field value" Modify the block group descriptor specified by .I bgnum so that the block group descriptor field .I field has value .IR value . Also available as .BR set_bg . .TP .BI set_current_time " time" Set current time in seconds since Unix epoch to use when setting file system fields. .TP .BI seti " filespec [num]" Mark inode .I filespec as in use in the inode bitmap. If .I num is specified, also set num\-1 inodes after the specified inode. .TP .BI set_inode_field " filespec field value" Modify the inode specified by .I filespec so that the inode field .I field has value .IR value . The list of valid inode fields which can be set via this command can be displayed by using the command: .B set_inode_field \-l Also available as .BR sif . .TP .BI set_mmp_value " field value" Modify the multiple-mount protection (MMP) data so that the MMP field .I field has value .IR value . The list of valid MMP fields which can be set via this command can be displayed by using the command: .B set_mmp_value \-l Also available as .BR smmp . .TP .BI set_super_value " field value" Set the superblock field .I field to .IR value . The list of valid superblock fields which can be set via this command can be displayed by using the command: .B set_super_value \-l Also available as .BR ssv . .TP .B show_debugfs_params Display .B debugfs parameters such as information about currently opened file system. .TP .BI show_super_stats " [\-h]" List the contents of the super block and the block group descriptors. If the .I \-h flag is given, only print out the superblock contents. Also available as .BR stats . .TP .BI stat " filespec" Display the contents of the inode structure of the inode .IR filespec . .TP .B supported_features Display file system features supported by this version of .BR debugfs . .TP .BI testb " block [count]" Test if the block number .I block is marked as allocated in the block bitmap. If the optional argument .I count is present, then .I count blocks starting at block number .I block will be tested. .TP .BI testi " filespec" Test if the inode .I filespec is marked as allocated in the inode bitmap. .TP .BI undel " [pathname]" Undelete the specified inode number (which must be surrounded by angle brackets) so that it and its blocks are marked in use, and optionally link the recovered inode to the specified pathname. The .B e2fsck command should always be run after using the .B undel command to recover deleted files. .IP Note that if you are recovering a large number of deleted files, linking the inode to a directory may require the directory to be expanded, which could allocate a block that had been used by one of the yet-to-be-undeleted files. So it is safer to undelete all of the inodes without specifying a destination pathname, and then in a separate pass, use the debugfs .B link command to link the inode to the destination pathname, or use .B e2fsck to check the file system and link all of the recovered inodes to the lost+found directory. .TP .BI unlink " pathname" Remove the link specified by .I pathname to an inode. Note this does not adjust the inode reference counts. .TP .BI write " source_file out_file" Copy the contents of .I source_file into a newly-created file in the file system named .IR out_file . .TP .BI zap_block " [\-f filespec] [\-o offset] [\-l length] [\-p pattern] block_num" Overwrite the block specified by .I block_num with zero (NUL) bytes, or if .I \-p is given use the byte specified by .IR pattern . If .I \-f is given then .I block_num is relative to the start of the file given by .IR filespec . The .I \-o and .I \-l options limit the range of bytes to zap to the specified .I offset and .I length relative to the start of the block. .TP .BI zap_block " [\-f filespec] [\-b bit] block_num" Bit-flip portions of the physical .IR block_num . If .I \-f is given, then .I block_num is a logical block relative to the start of .IR filespec . .SH ENVIRONMENT VARIABLES .TP .B DEBUGFS_PAGER, PAGER The .B debugfs program always pipes the output of the some commands through a pager program. These commands include: .IR show_super_stats " (" stats ), .IR list_directory " (" ls ), .IR show_inode_info " (" stat ), .IR list_deleted_inodes " (" lsdel ), and .IR htree_dump . The specific pager can explicitly specified by the .B DEBUGFS_PAGER environment variable, and if it is not set, by the .B PAGER environment variable. .IP Note that since a pager is always used, the .BR less (1) pager is not particularly appropriate, since it clears the screen before displaying the output of the command and clears the output the screen when the pager is exited. Many users prefer to use the .BR less (1) pager for most purposes, which is why the .B DEBUGFS_PAGER environment variable is available to override the more general .B PAGER environment variable. .SH AUTHOR .B debugfs was written by Theodore Ts'o . .SH SEE ALSO .BR dumpe2fs (8), .BR tune2fs (8), .BR e2fsck (8), .BR mke2fs (8), .BR ext4 (5) e2fsprogs-1.47.3-rc1/debugfs/debugfs.c000066400000000000000000002017111501560632700174140ustar00rootroot00000000000000/* * debugfs.c --- a program which allows you to attach an ext2fs * filesystem and play with it. * * Copyright (C) 1993 Theodore Ts'o. This file may be redistributed * under the terms of the GNU Public License. * * Modifications by Robert Sanders */ #include "config.h" #include #include #include #include #include #include #include #include #ifdef HAVE_GETOPT_H #include #else extern int optind; extern char *optarg; #endif #ifdef HAVE_ERRNO_H #include #endif #include #ifdef HAVE_SYS_SYSMACROS_H #include #endif #include "debugfs.h" #include "uuid/uuid.h" #include "e2p/e2p.h" #include #include "../version.h" #include "jfs_user.h" #include "support/plausible.h" #ifndef BUFSIZ #define BUFSIZ 8192 #endif #ifdef CONFIG_JBD_DEBUG /* Enabled by configure --enable-jbd-debug */ int journal_enable_debug = -1; #endif /* * There must be only one definition if we're hooking in extra commands or * changing default prompt. Use -DSKIP_GLOBDEF for that. */ #ifndef SKIP_GLOBDEFS ss_request_table *extra_cmds; const char *debug_prog_name; #endif int ss_sci_idx; ext2_filsys current_fs; quota_ctx_t current_qctx; ext2_ino_t root, cwd; static int debugfs_setup_tdb(const char *device_name, char *undo_file, io_manager *io_ptr) { errcode_t retval = ENOMEM; const char *tdb_dir = NULL; char *tdb_file = NULL; char *dev_name, *tmp_name; /* (re)open a specific undo file */ if (undo_file && undo_file[0] != 0) { retval = set_undo_io_backing_manager(*io_ptr); if (retval) goto err; *io_ptr = undo_io_manager; retval = set_undo_io_backup_file(undo_file); if (retval) goto err; printf("Overwriting existing filesystem; this can be undone " "using the command:\n" " e2undo %s %s\n\n", undo_file, device_name); return retval; } /* * Configuration via a conf file would be * nice */ tdb_dir = ss_safe_getenv("E2FSPROGS_UNDO_DIR"); if (!tdb_dir) tdb_dir = "/var/lib/e2fsprogs"; if (!strcmp(tdb_dir, "none") || (tdb_dir[0] == 0) || access(tdb_dir, W_OK)) return 0; tmp_name = strdup(device_name); if (!tmp_name) goto errout; dev_name = basename(tmp_name); tdb_file = malloc(strlen(tdb_dir) + 9 + strlen(dev_name) + 7 + 1); if (!tdb_file) { free(tmp_name); goto errout; } sprintf(tdb_file, "%s/debugfs-%s.e2undo", tdb_dir, dev_name); free(tmp_name); if ((unlink(tdb_file) < 0) && (errno != ENOENT)) { retval = errno; com_err("debugfs", retval, "while trying to delete %s", tdb_file); goto errout; } retval = set_undo_io_backing_manager(*io_ptr); if (retval) goto errout; *io_ptr = undo_io_manager; retval = set_undo_io_backup_file(tdb_file); if (retval) goto errout; printf("Overwriting existing filesystem; this can be undone " "using the command:\n" " e2undo %s %s\n\n", tdb_file, device_name); free(tdb_file); return 0; errout: free(tdb_file); err: com_err("debugfs", retval, "while trying to setup undo file\n"); return retval; } static void open_filesystem(char *device, int open_flags, blk64_t superblock, blk64_t blocksize, int catastrophic, char *data_filename, char *undo_file) { int retval; io_channel data_io = 0; io_manager io_ptr = unix_io_manager; if (superblock != 0 && blocksize == 0) { com_err(device, 0, "if you specify the superblock, you must also specify the block size"); current_fs = NULL; return; } if (data_filename) { if ((open_flags & EXT2_FLAG_IMAGE_FILE) == 0) { com_err(device, 0, "The -d option is only valid when reading an e2image file"); current_fs = NULL; return; } retval = unix_io_manager->open(data_filename, 0, &data_io); if (retval) { com_err(data_filename, 0, "while opening data source"); current_fs = NULL; return; } } if (catastrophic) open_flags |= EXT2_FLAG_SKIP_MMP | EXT2_FLAG_IGNORE_SB_ERRORS; if (undo_file) { retval = debugfs_setup_tdb(device, undo_file, &io_ptr); if (retval) exit(1); } try_open_again: retval = ext2fs_open(device, open_flags, superblock, blocksize, io_ptr, ¤t_fs); if (retval && (retval == EXT2_ET_SB_CSUM_INVALID) && !(open_flags & EXT2_FLAG_IGNORE_CSUM_ERRORS)) { open_flags |= EXT2_FLAG_IGNORE_CSUM_ERRORS; printf("Checksum errors in superblock! Retrying...\n"); goto try_open_again; } if (retval) { com_err(debug_prog_name, retval, "while trying to open %s", device); if (retval == EXT2_ET_BAD_MAGIC) check_plausibility(device, CHECK_FS_EXIST, NULL); current_fs = NULL; return; } current_fs->default_bitmap_type = EXT2FS_BMAP64_RBTREE; if (!catastrophic) { retval = ext2fs_read_bitmaps(current_fs); if (retval) { com_err(device, retval, "while reading allocation bitmaps"); goto errout; } } if (data_io) { retval = ext2fs_set_data_io(current_fs, data_io); if (retval) { com_err(device, retval, "while setting data source"); goto errout; } } root = cwd = EXT2_ROOT_INO; return; errout: retval = ext2fs_close_free(¤t_fs); if (retval) com_err(device, retval, "while trying to close filesystem"); } void do_open_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int c, err; int catastrophic = 0; blk64_t superblock = 0; blk64_t blocksize = 0; int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS | EXT2_FLAG_THREADS; char *data_filename = 0; char *undo_file = NULL; reset_getopt(); while ((c = getopt(argc, argv, "iwfecb:s:d:Dz:")) != EOF) { switch (c) { case 'i': open_flags |= EXT2_FLAG_IMAGE_FILE; break; case 'w': #ifdef READ_ONLY goto print_usage; #else open_flags |= EXT2_FLAG_RW; #endif /* READ_ONLY */ break; case 'f': open_flags |= EXT2_FLAG_FORCE; break; case 'e': open_flags |= EXT2_FLAG_EXCLUSIVE; break; case 'c': catastrophic = 1; break; case 'd': data_filename = optarg; break; case 'D': open_flags |= EXT2_FLAG_DIRECT_IO; break; case 'b': blocksize = parse_ulong(optarg, argv[0], "block size", &err); if (err) return; break; case 's': err = strtoblk(argv[0], optarg, "superblock block number", &superblock); if (err) return; break; case 'z': #ifdef READ_ONLY goto print_usage; #else undo_file = optarg; #endif break; default: goto print_usage; } } if (optind != argc-1) { goto print_usage; } if (check_fs_not_open(argv[0])) return; open_filesystem(argv[optind], open_flags, superblock, blocksize, catastrophic, data_filename, undo_file); return; print_usage: fprintf(stderr, "%s: Usage: open [-s superblock] [-b blocksize] " #ifdef READ_ONLY "[-d image_filename] [-z undo_file] [-c] [-i] [-f] [-e] [-D] " #else "[-d image_filename] [-c] [-i] [-f] [-e] [-D] [-w] " #endif "\n", argv[0]); } void do_lcd(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { if (argc != 2) { com_err(argv[0], 0, "Usage: %s %s", argv[0], ""); return; } if (chdir(argv[1]) == -1) { com_err(argv[0], errno, "while trying to change native directory to %s", argv[1]); return; } } static void close_filesystem(NOARGS) { int retval; if (current_fs->flags & EXT2_FLAG_IB_DIRTY) { retval = ext2fs_write_inode_bitmap(current_fs); if (retval) com_err("ext2fs_write_inode_bitmap", retval, 0); } if (current_fs->flags & EXT2_FLAG_BB_DIRTY) { retval = ext2fs_write_block_bitmap(current_fs); if (retval) com_err("ext2fs_write_block_bitmap", retval, 0); } if (current_qctx) quota_release_context(¤t_qctx); retval = ext2fs_close_free(¤t_fs); if (retval) com_err("ext2fs_close", retval, 0); return; } void do_close_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int c; if (check_fs_open(argv[0])) return; reset_getopt(); while ((c = getopt (argc, argv, "a")) != EOF) { switch (c) { case 'a': current_fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY; break; default: goto print_usage; } } if (argc > optind) { print_usage: com_err(0, 0, "Usage: close_filesys [-a]"); return; } close_filesystem(); } #ifndef READ_ONLY void do_init_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { struct ext2_super_block param; errcode_t retval; int err; blk64_t blocks; if (common_args_process(argc, argv, 3, 3, "initialize", " ", CHECK_FS_NOTOPEN)) return; memset(¶m, 0, sizeof(struct ext2_super_block)); err = strtoblk(argv[0], argv[2], "blocks count", &blocks); if (err) return; ext2fs_blocks_count_set(¶m, blocks); retval = ext2fs_initialize(argv[1], 0, ¶m, unix_io_manager, ¤t_fs); if (retval) { com_err(argv[1], retval, "while initializing filesystem"); current_fs = NULL; return; } root = cwd = EXT2_ROOT_INO; return; } static void print_features(struct ext2_super_block * s, FILE *f) { int i, j, printed=0; __u32 *mask = &s->s_feature_compat, m; fputs("Filesystem features:", f); for (i=0; i <3; i++,mask++) { for (j=0,m=1; j < 32; j++, m<<=1) { if (*mask & m) { fprintf(f, " %s", e2p_feature2string(i, m)); printed++; } } } if (printed == 0) fputs("(none)", f); fputs("\n", f); } #endif /* READ_ONLY */ static void print_bg_opts(ext2_filsys fs, dgrp_t group, int mask, const char *str, int *first, FILE *f) { if (ext2fs_bg_flags_test(fs, group, mask)) { if (*first) { fputs(" [", f); *first = 0; } else fputs(", ", f); fputs(str, f); } } void do_show_super_stats(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { const char *units ="block"; dgrp_t i; FILE *out; int c, header_only = 0; int numdirs = 0, first, gdt_csum; reset_getopt(); while ((c = getopt (argc, argv, "h")) != EOF) { switch (c) { case 'h': header_only++; break; default: goto print_usage; } } if (optind != argc) { goto print_usage; } if (check_fs_open(argv[0])) return; out = open_pager(); if (ext2fs_has_feature_bigalloc(current_fs->super)) units = "cluster"; list_super2(current_fs->super, out); if (ext2fs_has_feature_metadata_csum(current_fs->super) && !ext2fs_superblock_csum_verify(current_fs, current_fs->super)) { __u32 orig_csum = current_fs->super->s_checksum; ext2fs_superblock_csum_set(current_fs, current_fs->super); fprintf(out, "Expected Checksum: 0x%08x\n", current_fs->super->s_checksum); current_fs->super->s_checksum = orig_csum; } for (i=0; i < current_fs->group_desc_count; i++) numdirs += ext2fs_bg_used_dirs_count(current_fs, i); fprintf(out, "Directories: %u\n", numdirs); if (header_only) { close_pager(out); return; } gdt_csum = ext2fs_has_group_desc_csum(current_fs); for (i = 0; i < current_fs->group_desc_count; i++) { fprintf(out, " Group %2d: block bitmap at %llu, " "inode bitmap at %llu, " "inode table at %llu\n" " %u free %s%s, " "%u free %s, " "%u used %s%s", i, (unsigned long long) ext2fs_block_bitmap_loc(current_fs, i), (unsigned long long) ext2fs_inode_bitmap_loc(current_fs, i), (unsigned long long) ext2fs_inode_table_loc(current_fs, i), ext2fs_bg_free_blocks_count(current_fs, i), units, ext2fs_bg_free_blocks_count(current_fs, i) != 1 ? "s" : "", ext2fs_bg_free_inodes_count(current_fs, i), ext2fs_bg_free_inodes_count(current_fs, i) != 1 ? "inodes" : "inode", ext2fs_bg_used_dirs_count(current_fs, i), ext2fs_bg_used_dirs_count(current_fs, i) != 1 ? "directories" : "directory", gdt_csum ? ", " : "\n"); if (gdt_csum) fprintf(out, "%u unused %s\n", ext2fs_bg_itable_unused(current_fs, i), ext2fs_bg_itable_unused(current_fs, i) != 1 ? "inodes" : "inode"); first = 1; print_bg_opts(current_fs, i, EXT2_BG_INODE_UNINIT, "Inode not init", &first, out); print_bg_opts(current_fs, i, EXT2_BG_BLOCK_UNINIT, "Block not init", &first, out); if (gdt_csum) { fprintf(out, "%sChecksum 0x%04x", first ? " [":", ", ext2fs_bg_checksum(current_fs, i)); first = 0; } if (!first) fputs("]\n", out); } close_pager(out); return; print_usage: fprintf(stderr, "%s: Usage: show_super_stats [-h]\n", argv[0]); } #ifndef READ_ONLY void do_dirty_filesys(int argc EXT2FS_ATTR((unused)), ss_argv_t argv EXT2FS_ATTR((unused)), int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { if (check_fs_open(argv[0])) return; if (check_fs_read_write(argv[0])) return; if (argv[1] && !strcmp(argv[1], "-clean")) current_fs->super->s_state |= EXT2_VALID_FS; else current_fs->super->s_state &= ~EXT2_VALID_FS; ext2fs_mark_super_dirty(current_fs); } #endif /* READ_ONLY */ struct list_blocks_struct { FILE *f; e2_blkcnt_t total; blk64_t first_block, last_block; e2_blkcnt_t first_bcnt, last_bcnt; e2_blkcnt_t first; }; static void finish_range(struct list_blocks_struct *lb) { if (lb->first_block == 0) return; if (lb->first) lb->first = 0; else fprintf(lb->f, ", "); if (lb->first_block == lb->last_block) fprintf(lb->f, "(%lld):%llu", (long long)lb->first_bcnt, (unsigned long long) lb->first_block); else fprintf(lb->f, "(%lld-%lld):%llu-%llu", (long long)lb->first_bcnt, (long long)lb->last_bcnt, (unsigned long long) lb->first_block, (unsigned long long) lb->last_block); lb->first_block = 0; } static int list_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t *blocknr, e2_blkcnt_t blockcnt, blk64_t ref_block EXT2FS_ATTR((unused)), int ref_offset EXT2FS_ATTR((unused)), void *private) { struct list_blocks_struct *lb = (struct list_blocks_struct *) private; lb->total++; if (blockcnt >= 0) { /* * See if we can add on to the existing range (if it exists) */ if (lb->first_block && (lb->last_block+1 == *blocknr) && (lb->last_bcnt+1 == blockcnt)) { lb->last_block = *blocknr; lb->last_bcnt = blockcnt; return 0; } /* * Start a new range. */ finish_range(lb); lb->first_block = lb->last_block = *blocknr; lb->first_bcnt = lb->last_bcnt = blockcnt; return 0; } /* * Not a normal block. Always force a new range. */ finish_range(lb); if (lb->first) lb->first = 0; else fprintf(lb->f, ", "); if (blockcnt == -1) fprintf(lb->f, "(IND):%llu", (unsigned long long) *blocknr); else if (blockcnt == -2) fprintf(lb->f, "(DIND):%llu", (unsigned long long) *blocknr); else if (blockcnt == -3) fprintf(lb->f, "(TIND):%llu", (unsigned long long) *blocknr); return 0; } static void internal_dump_inode_extra(FILE *out, const char *prefix EXT2FS_ATTR((unused)), ext2_ino_t inode_num EXT2FS_ATTR((unused)), struct ext2_inode_large *inode) { fprintf(out, "Size of extra inode fields: %u\n", inode->i_extra_isize); if (inode->i_extra_isize > EXT2_INODE_SIZE(current_fs->super) - EXT2_GOOD_OLD_INODE_SIZE) { fprintf(stderr, "invalid inode->i_extra_isize (%u)\n", inode->i_extra_isize); return; } } static void dump_blocks(FILE *f, const char *prefix, ext2_ino_t inode) { struct list_blocks_struct lb; fprintf(f, "%sBLOCKS:\n%s", prefix, prefix); lb.total = 0; lb.first_block = 0; lb.f = f; lb.first = 1; ext2fs_block_iterate3(current_fs, inode, BLOCK_FLAG_READ_ONLY, NULL, list_blocks_proc, (void *)&lb); finish_range(&lb); if (lb.total) fprintf(f, "\n%sTOTAL: %lld\n", prefix, (long long)lb.total); fprintf(f,"\n"); } #define DUMP_LEAF_EXTENTS 0x01 #define DUMP_NODE_EXTENTS 0x02 #define DUMP_EXTENT_TABLE 0x04 static void dump_extents(FILE *f, const char *prefix, ext2_ino_t ino, int flags, int logical_width, int physical_width) { ext2_extent_handle_t handle; struct ext2fs_extent extent; struct ext2_extent_info info; int op = EXT2_EXTENT_ROOT; unsigned int printed = 0; errcode_t errcode; errcode = ext2fs_extent_open(current_fs, ino, &handle); if (errcode) return; if (flags & DUMP_EXTENT_TABLE) fprintf(f, "Level Entries %*s %*s Length Flags\n", (logical_width*2)+3, "Logical", (physical_width*2)+3, "Physical"); else fprintf(f, "%sEXTENTS:\n%s", prefix, prefix); while (1) { errcode = ext2fs_extent_get(handle, op, &extent); if (errcode) break; op = EXT2_EXTENT_NEXT; if (extent.e_flags & EXT2_EXTENT_FLAGS_SECOND_VISIT) continue; if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) { if ((flags & DUMP_LEAF_EXTENTS) == 0) continue; } else { if ((flags & DUMP_NODE_EXTENTS) == 0) continue; } errcode = ext2fs_extent_get_info(handle, &info); if (errcode) continue; if (!(extent.e_flags & EXT2_EXTENT_FLAGS_LEAF)) { if (extent.e_flags & EXT2_EXTENT_FLAGS_SECOND_VISIT) continue; if (flags & DUMP_EXTENT_TABLE) { fprintf(f, "%2d/%2d %3d/%3d %*llu - %*llu " "%*llu%*s %6u\n", info.curr_level, info.max_depth, info.curr_entry, info.num_entries, logical_width, (unsigned long long) extent.e_lblk, logical_width, (unsigned long long) extent.e_lblk + (extent.e_len - 1), physical_width, (unsigned long long) extent.e_pblk, physical_width+3, "", extent.e_len); continue; } fprintf(f, "%s(ETB%d):%llu", printed ? ", " : "", info.curr_level, (unsigned long long) extent.e_pblk); printed = 1; continue; } if (flags & DUMP_EXTENT_TABLE) { fprintf(f, "%2d/%2d %3d/%3d %*llu - %*llu " "%*llu - %*llu %6u %s\n", info.curr_level, info.max_depth, info.curr_entry, info.num_entries, logical_width, (unsigned long long) extent.e_lblk, logical_width, (unsigned long long) extent.e_lblk + (extent.e_len - 1), physical_width, (unsigned long long) extent.e_pblk, physical_width, (unsigned long long) extent.e_pblk + (extent.e_len - 1), extent.e_len, extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ? "Uninit" : ""); continue; } if (extent.e_len == 0) continue; else if (extent.e_len == 1) fprintf(f, "%s(%lld%s):%lld", printed ? ", " : "", (unsigned long long) extent.e_lblk, extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ? "[u]" : "", (unsigned long long) extent.e_pblk); else fprintf(f, "%s(%lld-%lld%s):%lld-%lld", printed ? ", " : "", (unsigned long long) extent.e_lblk, (unsigned long long) extent.e_lblk + (extent.e_len - 1), extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ? "[u]" : "", (unsigned long long) extent.e_pblk, (unsigned long long) extent.e_pblk + (extent.e_len - 1)); printed = 1; } if (printed) fprintf(f, "\n"); ext2fs_extent_free(handle); } static void dump_inline_data(FILE *out, const char *prefix, ext2_ino_t inode_num) { errcode_t retval; size_t size; retval = ext2fs_inline_data_size(current_fs, inode_num, &size); if (!retval) fprintf(out, "%sSize of inline data: %zu\n", prefix, size); } static void dump_inline_symlink(FILE *out, ext2_ino_t inode_num, struct ext2_inode *inode, const char *prefix) { errcode_t retval; char *buf = NULL; size_t size; retval = ext2fs_inline_data_size(current_fs, inode_num, &size); if (retval) goto out; retval = ext2fs_get_memzero(size + 1, &buf); if (retval) goto out; retval = ext2fs_inline_data_get(current_fs, inode_num, inode, buf, &size); if (retval) goto out; fprintf(out, "%sFast link dest: \"%.*s\"\n", prefix, (int)size, buf); out: if (buf) ext2fs_free_mem(&buf); if (retval) com_err(__func__, retval, "while dumping link destination"); } void internal_dump_inode(FILE *out, const char *prefix, ext2_ino_t inode_num, struct ext2_inode *inode, int do_dump_blocks) { const char *i_type; char frag, fsize; int os = current_fs->super->s_creator_os; struct ext2_inode_large *large_inode; size_t inode_size; large_inode = (struct ext2_inode_large *) inode; if (EXT2_INODE_SIZE(current_fs->super) > EXT2_GOOD_OLD_INODE_SIZE) inode_size = ext2fs_inode_actual_size(large_inode); else inode_size = EXT2_GOOD_OLD_INODE_SIZE; if (LINUX_S_ISDIR(inode->i_mode)) i_type = "directory"; else if (LINUX_S_ISREG(inode->i_mode)) i_type = "regular"; else if (LINUX_S_ISLNK(inode->i_mode)) i_type = "symlink"; else if (LINUX_S_ISBLK(inode->i_mode)) i_type = "block special"; else if (LINUX_S_ISCHR(inode->i_mode)) i_type = "character special"; else if (LINUX_S_ISFIFO(inode->i_mode)) i_type = "FIFO"; else if (LINUX_S_ISSOCK(inode->i_mode)) i_type = "socket"; else i_type = "bad type"; fprintf(out, "%sInode: %u Type: %s ", prefix, inode_num, i_type); fprintf(out, "%sMode: 0%03o Flags: 0x%x\n", prefix, inode->i_mode & 07777, inode->i_flags); if (ext2fs_inode_includes(inode_size, i_version_hi)) { fprintf(out, "%sGeneration: %u Version: 0x%08x:%08x\n", prefix, inode->i_generation, large_inode->i_version_hi, inode->osd1.linux1.l_i_version); } else { fprintf(out, "%sGeneration: %u Version: 0x%08x\n", prefix, inode->i_generation, inode->osd1.linux1.l_i_version); } fprintf(out, "%sUser: %5d Group: %5d", prefix, inode_uid(*inode), inode_gid(*inode)); if (ext2fs_inode_includes(inode_size, i_projid)) fprintf(out, " Project: %5d", large_inode->i_projid); fputs(" Size: ", out); if (LINUX_S_ISREG(inode->i_mode) || LINUX_S_ISDIR(inode->i_mode)) fprintf(out, "%llu\n", (unsigned long long) EXT2_I_SIZE(inode)); else fprintf(out, "%u\n", inode->i_size); if (os == EXT2_OS_HURD) fprintf(out, "%sFile ACL: %u Translator: %u\n", prefix, inode->i_file_acl, inode->osd1.hurd1.h_i_translator); else fprintf(out, "%sFile ACL: %llu\n", prefix, inode->i_file_acl | ((long long) (inode->osd2.linux2.l_i_file_acl_high) << 32)); if (os != EXT2_OS_HURD) fprintf(out, "%sLinks: %u Blockcount: %llu\n", prefix, inode->i_links_count, (((unsigned long long) inode->osd2.linux2.l_i_blocks_hi << 32)) + inode->i_blocks); else fprintf(out, "%sLinks: %u Blockcount: %u\n", prefix, inode->i_links_count, inode->i_blocks); switch (os) { case EXT2_OS_HURD: frag = inode->osd2.hurd2.h_i_frag; fsize = inode->osd2.hurd2.h_i_fsize; break; default: frag = fsize = 0; } fprintf(out, "%sFragment: Address: %u Number: %u Size: %u\n", prefix, inode->i_faddr, frag, fsize); if (ext2fs_inode_includes(inode_size, i_ctime_extra)) fprintf(out, "%s ctime: 0x%08x:%08x -- %s", prefix, inode->i_ctime, large_inode->i_ctime_extra, time_to_string(ext2fs_inode_xtime_get(large_inode, i_ctime))); else fprintf(out, "%sctime: 0x%08x -- %s", prefix, inode->i_ctime, time_to_string((__s32) inode->i_ctime)); if (ext2fs_inode_includes(inode_size, i_atime_extra)) fprintf(out, "%s atime: 0x%08x:%08x -- %s", prefix, inode->i_atime, large_inode->i_atime_extra, time_to_string(ext2fs_inode_xtime_get(large_inode, i_atime))); else fprintf(out, "%satime: 0x%08x -- %s", prefix, inode->i_atime, time_to_string((__s32) inode->i_atime)); if (ext2fs_inode_includes(inode_size, i_mtime_extra)) fprintf(out, "%s mtime: 0x%08x:%08x -- %s", prefix, inode->i_mtime, large_inode->i_mtime_extra, time_to_string(ext2fs_inode_xtime_get(large_inode, i_mtime))); else fprintf(out, "%smtime: 0x%08x -- %s", prefix, inode->i_mtime, time_to_string((__s32) inode->i_mtime)); if (ext2fs_inode_includes(inode_size, i_crtime_extra)) fprintf(out, "%scrtime: 0x%08x:%08x -- %s", prefix, large_inode->i_crtime, large_inode->i_crtime_extra, time_to_string(ext2fs_inode_xtime_get(large_inode, i_crtime))); if (inode->i_dtime) { if (ext2fs_inode_includes(inode_size, i_ctime_extra)) { time_t tm; /* dtime doesn't have its own i_dtime_extra field, so * approximate this with i_ctime_extra instead. */ tm = __decode_extra_sec(inode->i_dtime, large_inode->i_ctime_extra); fprintf(out, "%s dtime: 0x%08x:(%08x) -- %s", prefix, inode->i_dtime, large_inode->i_ctime_extra, time_to_string(tm)); } else { fprintf(out, "%sdtime: 0x%08x -- %s", prefix, inode->i_dtime, time_to_string((__s32) inode->i_dtime)); } } if (EXT2_INODE_SIZE(current_fs->super) > EXT2_GOOD_OLD_INODE_SIZE) internal_dump_inode_extra(out, prefix, inode_num, (struct ext2_inode_large *) inode); dump_inode_attributes(out, inode_num); if (ext2fs_has_feature_metadata_csum(current_fs->super)) { __u32 crc = inode->i_checksum_lo; if (ext2fs_inode_includes(inode_size, i_checksum_hi)) crc |= ((__u32)large_inode->i_checksum_hi) << 16; fprintf(out, "Inode checksum: 0x%08x\n", crc); } if (LINUX_S_ISLNK(inode->i_mode) && ext2fs_is_fast_symlink(inode)) fprintf(out, "%sFast link dest: \"%.*s\"\n", prefix, (int)EXT2_I_SIZE(inode), (char *)inode->i_block); else if (LINUX_S_ISLNK(inode->i_mode) && (inode->i_flags & EXT4_INLINE_DATA_FL)) dump_inline_symlink(out, inode_num, inode, prefix); else if (LINUX_S_ISBLK(inode->i_mode) || LINUX_S_ISCHR(inode->i_mode)) { int major, minor; const char *devnote; if (inode->i_block[0]) { major = (inode->i_block[0] >> 8) & 255; minor = inode->i_block[0] & 255; devnote = ""; } else { major = (inode->i_block[1] & 0xfff00) >> 8; minor = ((inode->i_block[1] & 0xff) | ((inode->i_block[1] >> 12) & 0xfff00)); devnote = "(New-style) "; } fprintf(out, "%sDevice major/minor number: %02d:%02d (hex %02x:%02x)\n", devnote, major, minor, major, minor); } else if (do_dump_blocks) { if (inode->i_flags & EXT4_EXTENTS_FL) dump_extents(out, prefix, inode_num, DUMP_LEAF_EXTENTS|DUMP_NODE_EXTENTS, 0, 0); else if (inode->i_flags & EXT4_INLINE_DATA_FL) dump_inline_data(out, prefix, inode_num); else dump_blocks(out, prefix, inode_num); } } static void dump_inode(ext2_ino_t inode_num, struct ext2_inode *inode) { FILE *out; out = open_pager(); internal_dump_inode(out, "", inode_num, inode, 1); close_pager(out); } void do_stat(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; struct ext2_inode * inode_buf; if (check_fs_open(argv[0])) return; inode_buf = (struct ext2_inode *) malloc(EXT2_INODE_SIZE(current_fs->super)); if (!inode_buf) { fprintf(stderr, "do_stat: can't allocate buffer\n"); return; } if (common_inode_args_process(argc, argv, &inode, 0)) { free(inode_buf); return; } if (debugfs_read_inode2(inode, inode_buf, argv[0], EXT2_INODE_SIZE(current_fs->super), 0)) { free(inode_buf); return; } dump_inode(inode, inode_buf); free(inode_buf); return; } void do_dump_extents(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { struct ext2_inode inode; ext2_ino_t ino; FILE *out; int c, flags = 0; int logical_width; int physical_width; reset_getopt(); while ((c = getopt(argc, argv, "nl")) != EOF) { switch (c) { case 'n': flags |= DUMP_NODE_EXTENTS; break; case 'l': flags |= DUMP_LEAF_EXTENTS; break; } } if (argc != optind + 1) { com_err(0, 0, "Usage: dump_extents [-n] [-l] file"); return; } if (flags == 0) flags = DUMP_NODE_EXTENTS | DUMP_LEAF_EXTENTS; flags |= DUMP_EXTENT_TABLE; if (check_fs_open(argv[0])) return; ino = string_to_inode(argv[optind]); if (ino == 0) return; if (debugfs_read_inode(ino, &inode, argv[0])) return; if ((inode.i_flags & EXT4_EXTENTS_FL) == 0) { fprintf(stderr, "%s: does not uses extent block maps\n", argv[optind]); return; } logical_width = ext2fs_log10_u32((EXT2_I_SIZE(&inode) + current_fs->blocksize - 1) / current_fs->blocksize) + 1; if (logical_width < 5) logical_width = 5; physical_width = ext2fs_log10_u64(ext2fs_blocks_count(current_fs->super)) + 1; if (physical_width < 5) physical_width = 5; out = open_pager(); dump_extents(out, "", ino, flags, logical_width, physical_width); close_pager(out); return; } static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t *blocknr, e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)), blk64_t ref_block EXT2FS_ATTR((unused)), int ref_offset EXT2FS_ATTR((unused)), void *private EXT2FS_ATTR((unused))) { printf("%llu ", (unsigned long long) *blocknr); return 0; } void do_blocks(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; if (check_fs_open(argv[0])) return; if (common_inode_args_process(argc, argv, &inode, 0)) { return; } ext2fs_block_iterate3(current_fs, inode, BLOCK_FLAG_READ_ONLY, NULL, print_blocks_proc, NULL); fputc('\n', stdout); return; } void do_chroot(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; int retval; if (common_inode_args_process(argc, argv, &inode, 0)) return; retval = ext2fs_check_directory(current_fs, inode); if (retval) { com_err(argv[1], retval, 0); return; } root = inode; } #ifndef READ_ONLY void do_clri(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; struct ext2_inode inode_buf; if (common_inode_args_process(argc, argv, &inode, CHECK_FS_RW)) return; if (debugfs_read_inode(inode, &inode_buf, argv[0])) return; memset(&inode_buf, 0, sizeof(inode_buf)); if (debugfs_write_inode(inode, &inode_buf, argv[0])) return; } void do_freei(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { unsigned int len = 1; int err = 0; ext2_ino_t inode; if (common_args_process(argc, argv, 2, 3, argv[0], " [num]", CHECK_FS_RW | CHECK_FS_BITMAPS)) return; if (check_fs_read_write(argv[0])) return; inode = string_to_inode(argv[1]); if (!inode) return; if (argc == 3) { len = parse_ulong(argv[2], argv[0], "length", &err); if (err) return; } if (len == 1 && !ext2fs_test_inode_bitmap2(current_fs->inode_map,inode)) com_err(argv[0], 0, "Warning: inode already clear"); while (len-- > 0) ext2fs_unmark_inode_bitmap2(current_fs->inode_map, inode++); ext2fs_mark_ib_dirty(current_fs); } void do_seti(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { unsigned int len = 1; int err = 0; ext2_ino_t inode; if (common_args_process(argc, argv, 2, 3, argv[0], " [num]", CHECK_FS_RW | CHECK_FS_BITMAPS)) return; if (check_fs_read_write(argv[0])) return; inode = string_to_inode(argv[1]); if (!inode) return; if (argc == 3) { len = parse_ulong(argv[2], argv[0], "length", &err); if (err) return; } if ((len == 1) && ext2fs_test_inode_bitmap2(current_fs->inode_map,inode)) com_err(argv[0], 0, "Warning: inode already set"); while (len-- > 0) ext2fs_mark_inode_bitmap2(current_fs->inode_map, inode++); ext2fs_mark_ib_dirty(current_fs); } #endif /* READ_ONLY */ void do_testi(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; if (common_inode_args_process(argc, argv, &inode, CHECK_FS_BITMAPS)) return; if (ext2fs_test_inode_bitmap2(current_fs->inode_map,inode)) printf("Inode %u is marked in use\n", inode); else printf("Inode %u is not in use\n", inode); } #ifndef READ_ONLY void do_freeb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { blk64_t block; blk64_t count = 1; if (common_block_args_process(argc, argv, &block, &count)) return; if (check_fs_read_write(argv[0])) return; while (count-- > 0) { if (!ext2fs_test_block_bitmap2(current_fs->block_map,block)) com_err(argv[0], 0, "Warning: block %llu already clear", (unsigned long long) block); ext2fs_unmark_block_bitmap2(current_fs->block_map,block); block++; } ext2fs_mark_bb_dirty(current_fs); } void do_setb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { blk64_t block; blk64_t count = 1; if (common_block_args_process(argc, argv, &block, &count)) return; if (check_fs_read_write(argv[0])) return; while (count-- > 0) { if (ext2fs_test_block_bitmap2(current_fs->block_map,block)) com_err(argv[0], 0, "Warning: block %llu already set", (unsigned long long) block); ext2fs_mark_block_bitmap2(current_fs->block_map,block); block++; } ext2fs_mark_bb_dirty(current_fs); } #endif /* READ_ONLY */ void do_testb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { blk64_t block; blk64_t count = 1; if (common_block_args_process(argc, argv, &block, &count)) return; while (count-- > 0) { if (ext2fs_test_block_bitmap2(current_fs->block_map,block)) printf("Block %llu marked in use\n", (unsigned long long) block); else printf("Block %llu not in use\n", (unsigned long long) block); block++; } } #ifndef READ_ONLY static void modify_u8(char *com, const char *prompt, const char *format, __u8 *val) { char buf[200]; unsigned long v; char *tmp; sprintf(buf, format, *val); printf("%30s [%s] ", prompt, buf); if (!fgets(buf, sizeof(buf), stdin)) return; if (buf[strlen (buf) - 1] == '\n') buf[strlen (buf) - 1] = '\0'; if (!buf[0]) return; v = strtoul(buf, &tmp, 0); if (*tmp) com_err(com, 0, "Bad value - %s", buf); else *val = v; } static void modify_u16(char *com, const char *prompt, const char *format, __u16 *val) { char buf[200]; unsigned long v; char *tmp; sprintf(buf, format, *val); printf("%30s [%s] ", prompt, buf); if (!fgets(buf, sizeof(buf), stdin)) return; if (buf[strlen (buf) - 1] == '\n') buf[strlen (buf) - 1] = '\0'; if (!buf[0]) return; v = strtoul(buf, &tmp, 0); if (*tmp) com_err(com, 0, "Bad value - %s", buf); else *val = v; } static void modify_u32(char *com, const char *prompt, const char *format, __u32 *val) { char buf[200]; unsigned long v; char *tmp; sprintf(buf, format, *val); printf("%30s [%s] ", prompt, buf); if (!fgets(buf, sizeof(buf), stdin)) return; if (buf[strlen (buf) - 1] == '\n') buf[strlen (buf) - 1] = '\0'; if (!buf[0]) return; v = strtoul(buf, &tmp, 0); if (*tmp) com_err(com, 0, "Bad value - %s", buf); else *val = v; } void do_modify_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { struct ext2_inode inode; ext2_ino_t inode_num; int i; unsigned char *frag, *fsize; char buf[80]; int os; const char *hex_format = "0x%x"; const char *octal_format = "0%o"; const char *decimal_format = "%d"; const char *unsignedlong_format = "%lu"; if (common_inode_args_process(argc, argv, &inode_num, CHECK_FS_RW)) return; os = current_fs->super->s_creator_os; if (debugfs_read_inode(inode_num, &inode, argv[1])) return; modify_u16(argv[0], "Mode", octal_format, &inode.i_mode); modify_u16(argv[0], "User ID", decimal_format, &inode.i_uid); modify_u16(argv[0], "Group ID", decimal_format, &inode.i_gid); modify_u32(argv[0], "Size", unsignedlong_format, &inode.i_size); modify_u32(argv[0], "Creation time", decimal_format, &inode.i_ctime); modify_u32(argv[0], "Modification time", decimal_format, &inode.i_mtime); modify_u32(argv[0], "Access time", decimal_format, &inode.i_atime); modify_u32(argv[0], "Deletion time", decimal_format, &inode.i_dtime); modify_u16(argv[0], "Link count", decimal_format, &inode.i_links_count); if (os == EXT2_OS_LINUX) modify_u16(argv[0], "Block count high", unsignedlong_format, &inode.osd2.linux2.l_i_blocks_hi); modify_u32(argv[0], "Block count", unsignedlong_format, &inode.i_blocks); modify_u32(argv[0], "File flags", hex_format, &inode.i_flags); modify_u32(argv[0], "Generation", hex_format, &inode.i_generation); #if 0 modify_u32(argv[0], "Reserved1", decimal_format, &inode.i_reserved1); #endif modify_u32(argv[0], "File acl", decimal_format, &inode.i_file_acl); modify_u32(argv[0], "High 32bits of size", decimal_format, &inode.i_size_high); if (os == EXT2_OS_HURD) modify_u32(argv[0], "Translator Block", decimal_format, &inode.osd1.hurd1.h_i_translator); modify_u32(argv[0], "Fragment address", decimal_format, &inode.i_faddr); switch (os) { case EXT2_OS_HURD: frag = &inode.osd2.hurd2.h_i_frag; fsize = &inode.osd2.hurd2.h_i_fsize; break; default: frag = fsize = 0; } if (frag) modify_u8(argv[0], "Fragment number", decimal_format, frag); if (fsize) modify_u8(argv[0], "Fragment size", decimal_format, fsize); for (i=0; i < EXT2_NDIR_BLOCKS; i++) { sprintf(buf, "Direct Block #%u", i); modify_u32(argv[0], buf, decimal_format, &inode.i_block[i]); } modify_u32(argv[0], "Indirect Block", decimal_format, &inode.i_block[EXT2_IND_BLOCK]); modify_u32(argv[0], "Double Indirect Block", decimal_format, &inode.i_block[EXT2_DIND_BLOCK]); modify_u32(argv[0], "Triple Indirect Block", decimal_format, &inode.i_block[EXT2_TIND_BLOCK]); if (debugfs_write_inode(inode_num, &inode, argv[1])) return; } #endif /* READ_ONLY */ void do_change_working_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; int retval; if (common_inode_args_process(argc, argv, &inode, 0)) return; retval = ext2fs_check_directory(current_fs, inode); if (retval) { com_err(argv[1], retval, 0); return; } cwd = inode; return; } void do_print_working_directory(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int retval; char *pathname = NULL; if (common_args_process(argc, argv, 1, 1, "print_working_directory", "", 0)) return; retval = ext2fs_get_pathname(current_fs, cwd, 0, &pathname); if (retval) { com_err(argv[0], retval, "while trying to get pathname of cwd"); } printf("[pwd] INODE: %6u PATH: %s\n", cwd, pathname ? pathname : "NULL"); if (pathname) { free(pathname); pathname = NULL; } retval = ext2fs_get_pathname(current_fs, root, 0, &pathname); if (retval) { com_err(argv[0], retval, "while trying to get pathname of root"); } printf("[root] INODE: %6u PATH: %s\n", root, pathname ? pathname : "NULL"); if (pathname) { free(pathname); pathname = NULL; } return; } #ifndef READ_ONLY static void make_link(char *sourcename, char *destname) { ext2_ino_t ino; struct ext2_inode inode; int retval; ext2_ino_t dir; char *dest, *cp, *base_name; /* * Get the source inode */ ino = string_to_inode(sourcename); if (!ino) return; base_name = strrchr(sourcename, '/'); if (base_name) base_name++; else base_name = sourcename; /* * Figure out the destination. First see if it exists and is * a directory. */ if (! (retval=ext2fs_namei(current_fs, root, cwd, destname, &dir))) dest = base_name; else { /* * OK, it doesn't exist. See if it is * '/basename' or 'basename' */ cp = strrchr(destname, '/'); if (cp) { *cp = 0; dir = string_to_inode(destname); if (!dir) return; dest = cp+1; } else { dir = cwd; dest = destname; } } if (debugfs_read_inode(ino, &inode, sourcename)) return; retval = ext2fs_link(current_fs, dir, dest, ino, ext2_file_type(inode.i_mode)); if (retval) com_err("make_link", retval, 0); return; } void do_link(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { if (common_args_process(argc, argv, 3, 3, "link", " ", CHECK_FS_RW)) return; make_link(argv[1], argv[2]); } static int mark_blocks_proc(ext2_filsys fs, blk64_t *blocknr, e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)), blk64_t ref_block EXT2FS_ATTR((unused)), int ref_offset EXT2FS_ATTR((unused)), void *private EXT2FS_ATTR((unused))) { blk64_t block; block = *blocknr; ext2fs_block_alloc_stats2(fs, block, +1); return 0; } void do_undel(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t ino; struct ext2_inode inode; if (common_args_process(argc, argv, 2, 3, "undelete", " [dest_name]", CHECK_FS_RW | CHECK_FS_BITMAPS)) return; ino = string_to_inode(argv[1]); if (!ino) return; if (debugfs_read_inode(ino, &inode, argv[1])) return; if (ext2fs_test_inode_bitmap2(current_fs->inode_map, ino)) { com_err(argv[1], 0, "Inode is not marked as deleted"); return; } /* * XXX this function doesn't handle changing the links count on the * parent directory when undeleting a directory. */ inode.i_links_count = LINUX_S_ISDIR(inode.i_mode) ? 2 : 1; inode.i_dtime = 0; if (debugfs_write_inode(ino, &inode, argv[0])) return; ext2fs_block_iterate3(current_fs, ino, BLOCK_FLAG_READ_ONLY, NULL, mark_blocks_proc, NULL); ext2fs_inode_alloc_stats2(current_fs, ino, +1, 0); if (argc > 2) make_link(argv[1], argv[2]); } static void unlink_file_by_name(char *filename) { int retval; ext2_ino_t dir; char *base_name; base_name = strrchr(filename, '/'); if (base_name) { *base_name++ = '\0'; dir = string_to_inode(filename); if (!dir) return; } else { dir = cwd; base_name = filename; } retval = ext2fs_unlink(current_fs, dir, base_name, 0, 0); if (retval) com_err("unlink_file_by_name", retval, 0); return; } void do_unlink(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { if (common_args_process(argc, argv, 2, 2, "link", "", CHECK_FS_RW)) return; unlink_file_by_name(argv[1]); } void do_copy_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t src_ino, dest_ino; unsigned char buf[4096]; if (common_args_process(argc, argv, 3, 3, "copy_inode", " ", CHECK_FS_RW)) return; src_ino = string_to_inode(argv[1]); if (!src_ino) return; dest_ino = string_to_inode(argv[2]); if (!dest_ino) return; if (debugfs_read_inode2(src_ino, (struct ext2_inode *) buf, argv[0], sizeof(buf), 0)) return; if (debugfs_write_inode2(dest_ino, (struct ext2_inode *) buf, argv[0], sizeof(buf), 0)) return; } #endif /* READ_ONLY */ void do_find_free_block(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { blk64_t free_blk, goal, first_free = 0; int count; errcode_t retval; char *tmp; if ((argc > 3) || (argc==2 && *argv[1] == '?')) { com_err(argv[0], 0, "Usage: find_free_block [count [goal]]"); return; } if (check_fs_open(argv[0])) return; if (argc > 1) { count = strtol(argv[1],&tmp,0); if (*tmp) { com_err(argv[0], 0, "Bad count - %s", argv[1]); return; } } else count = 1; if (argc > 2) { goal = strtol(argv[2], &tmp, 0); if (*tmp) { com_err(argv[0], 0, "Bad goal - %s", argv[1]); return; } } else goal = current_fs->super->s_first_data_block; printf("Free blocks found: "); free_blk = goal - 1; while (count-- > 0) { retval = ext2fs_new_block2(current_fs, free_blk + 1, 0, &free_blk); if (first_free) { if (first_free == free_blk) break; } else first_free = free_blk; if (retval) { com_err("ext2fs_new_block", retval, 0); return; } else printf("%llu ", (unsigned long long) free_blk); } printf("\n"); } void do_find_free_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t free_inode, dir; int mode; int retval; char *tmp; if (argc > 3 || (argc>1 && *argv[1] == '?')) { com_err(argv[0], 0, "Usage: find_free_inode [dir [mode]]"); return; } if (check_fs_open(argv[0])) return; if (argc > 1) { dir = strtol(argv[1], &tmp, 0); if (*tmp) { com_err(argv[0], 0, "Bad dir - %s", argv[1]); return; } } else dir = root; if (argc > 2) { mode = strtol(argv[2], &tmp, 0); if (*tmp) { com_err(argv[0], 0, "Bad mode - %s", argv[2]); return; } } else mode = 010755; retval = ext2fs_new_inode(current_fs, dir, mode, 0, &free_inode); if (retval) com_err("ext2fs_new_inode", retval, 0); else printf("Free inode found: %u\n", free_inode); } #ifndef READ_ONLY void do_write(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { errcode_t retval; if (common_args_process(argc, argv, 3, 3, "write", " ", CHECK_FS_RW)) return; retval = do_write_internal(current_fs, cwd, argv[1], argv[2], 0, root); if (retval) com_err(argv[0], retval, 0); } void do_mknod(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { unsigned long major, minor; errcode_t retval; int nr; struct stat st; if (check_fs_open(argv[0])) return; if (argc < 3 || argv[2][1]) { usage: com_err(argv[0], 0, "Usage: mknod [p| [c|b] ]"); return; } minor = major = 0; switch (argv[2][0]) { case 'p': st.st_mode = S_IFIFO; nr = 3; break; case 'c': st.st_mode = S_IFCHR; nr = 5; break; case 'b': st.st_mode = S_IFBLK; nr = 5; break; default: nr = 0; } if (nr == 5) { char *end1 = NULL, *end2 = NULL; major = strtoul(argv[3], &end1, 0); minor = strtoul(argv[4], &end2, 0); if (major > 65535 || minor > 65535 || (end1 && *end1) || (end2 && *end2)) nr = 0; } if (argc != nr) goto usage; st.st_rdev = makedev(major, minor); retval = do_mknod_internal(current_fs, cwd, argv[1], st.st_mode, st.st_rdev); if (retval) com_err(argv[0], retval, 0); } void do_mkdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { errcode_t retval; if (common_args_process(argc, argv, 2, 2, "mkdir", "", CHECK_FS_RW)) return; retval = do_mkdir_internal(current_fs, cwd, argv[1], 0, root); if (retval) com_err(argv[0], retval, 0); } static int release_blocks_proc(ext2_filsys fs, blk64_t *blocknr, e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)), blk64_t ref_block EXT2FS_ATTR((unused)), int ref_offset EXT2FS_ATTR((unused)), void *private) { blk64_t block = *blocknr; blk64_t *last_cluster = (blk64_t *)private; blk64_t cluster = EXT2FS_B2C(fs, block); if (cluster == *last_cluster) return 0; *last_cluster = cluster; ext2fs_block_alloc_stats2(fs, block, -1); return 0; } static void kill_file_by_inode(ext2_ino_t inode) { struct ext2_inode inode_buf; if (debugfs_read_inode(inode, &inode_buf, 0)) return; ext2fs_set_dtime(current_fs, &inode_buf); if (debugfs_write_inode(inode, &inode_buf, 0)) return; if (ext2fs_inode_has_valid_blocks2(current_fs, &inode_buf)) { blk64_t last_cluster = 0; ext2fs_block_iterate3(current_fs, inode, BLOCK_FLAG_READ_ONLY, NULL, release_blocks_proc, &last_cluster); } printf("\n"); ext2fs_inode_alloc_stats2(current_fs, inode, -1, LINUX_S_ISDIR(inode_buf.i_mode)); } void do_kill_file(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode_num; if (common_inode_args_process(argc, argv, &inode_num, CHECK_FS_RW)) return; kill_file_by_inode(inode_num); } void do_rm(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int retval; ext2_ino_t inode_num; struct ext2_inode inode; if (common_args_process(argc, argv, 2, 2, "rm", "", CHECK_FS_RW)) return; retval = ext2fs_namei(current_fs, root, cwd, argv[1], &inode_num); if (retval) { com_err(argv[0], retval, "while trying to resolve filename"); return; } if (debugfs_read_inode(inode_num, &inode, argv[0])) return; if (LINUX_S_ISDIR(inode.i_mode)) { com_err(argv[0], 0, "file is a directory"); return; } --inode.i_links_count; if (debugfs_write_inode(inode_num, &inode, argv[0])) return; unlink_file_by_name(argv[1]); if (inode.i_links_count == 0) kill_file_by_inode(inode_num); } struct rd_struct { ext2_ino_t parent; int empty; }; static int rmdir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)), int entry EXT2FS_ATTR((unused)), struct ext2_dir_entry *dirent, int offset EXT2FS_ATTR((unused)), int blocksize EXT2FS_ATTR((unused)), char *buf EXT2FS_ATTR((unused)), void *private) { struct rd_struct *rds = (struct rd_struct *) private; if (dirent->inode == 0) return 0; if ((ext2fs_dirent_name_len(dirent) == 1) && (dirent->name[0] == '.')) return 0; if ((ext2fs_dirent_name_len(dirent) == 2) && (dirent->name[0] == '.') && (dirent->name[1] == '.')) { rds->parent = dirent->inode; return 0; } rds->empty = 0; return 0; } void do_rmdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int retval; ext2_ino_t inode_num; struct ext2_inode inode; struct rd_struct rds; if (common_args_process(argc, argv, 2, 2, "rmdir", "", CHECK_FS_RW)) return; retval = ext2fs_namei(current_fs, root, cwd, argv[1], &inode_num); if (retval) { com_err(argv[0], retval, "while trying to resolve filename"); return; } if (debugfs_read_inode(inode_num, &inode, argv[0])) return; if (!LINUX_S_ISDIR(inode.i_mode)) { com_err(argv[0], 0, "file is not a directory"); return; } rds.parent = 0; rds.empty = 1; retval = ext2fs_dir_iterate2(current_fs, inode_num, 0, 0, rmdir_proc, &rds); if (retval) { com_err(argv[0], retval, "while iterating over directory"); return; } if (rds.empty == 0) { com_err(argv[0], 0, "directory not empty"); return; } inode.i_links_count = 0; if (debugfs_write_inode(inode_num, &inode, argv[0])) return; unlink_file_by_name(argv[1]); kill_file_by_inode(inode_num); if (rds.parent) { if (debugfs_read_inode(rds.parent, &inode, argv[0])) return; if (inode.i_links_count > 1) inode.i_links_count--; if (debugfs_write_inode(rds.parent, &inode, argv[0])) return; } } #endif /* READ_ONLY */ void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)), ss_argv_t argv EXT2FS_ATTR((unused)), int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { if (current_fs) printf("Open mode: read-%s\n", current_fs->flags & EXT2_FLAG_RW ? "write" : "only"); printf("Filesystem in use: %s\n", current_fs ? current_fs->device_name : "--none--"); } #ifndef READ_ONLY void do_expand_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t inode; int retval; if (common_inode_args_process(argc, argv, &inode, CHECK_FS_RW)) return; retval = ext2fs_expand_dir(current_fs, inode); if (retval) com_err("ext2fs_expand_dir", retval, 0); return; } void do_features(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { int i; if (check_fs_open(argv[0])) return; if ((argc != 1) && check_fs_read_write(argv[0])) return; for (i=1; i < argc; i++) { if (e2p_edit_feature(argv[i], ¤t_fs->super->s_feature_compat, 0)) com_err(argv[0], 0, "Unknown feature: %s\n", argv[i]); else ext2fs_mark_super_dirty(current_fs); } print_features(current_fs->super, stdout); } #endif /* READ_ONLY */ void do_bmap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t ino; blk64_t blk, pblk = 0; int c, err, flags = 0, ret_flags = 0; errcode_t errcode; if (check_fs_open(argv[0])) return; reset_getopt(); while ((c = getopt (argc, argv, "a")) != EOF) { switch (c) { case 'a': flags |= BMAP_ALLOC; break; default: goto print_usage; } } if (argc <= optind+1) { print_usage: com_err(0, 0, "Usage: bmap [-a] logical_blk [physical_blk]"); return; } ino = string_to_inode(argv[optind++]); if (!ino) return; err = strtoblk(argv[0], argv[optind++], "logical block", &blk); if (err) return; if (argc > optind+1) goto print_usage; if (argc == optind+1) { err = strtoblk(argv[0], argv[optind++], "physical block", &pblk); if (err) return; if (flags & BMAP_ALLOC) { com_err(0, 0, "Can't set and allocate a block"); return; } flags |= BMAP_SET; } errcode = ext2fs_bmap2(current_fs, ino, 0, 0, flags, blk, &ret_flags, &pblk); if (errcode) { com_err(argv[0], errcode, "while mapping logical block %llu\n", (unsigned long long) blk); return; } printf("%llu", (unsigned long long) pblk); if (ret_flags & BMAP_RET_UNINIT) fputs(" (uninit)", stdout); fputc('\n', stdout); } void do_imap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { ext2_ino_t ino; unsigned long group, block, block_nr, offset; if (common_args_process(argc, argv, 2, 2, argv[0], "", 0)) return; ino = string_to_inode(argv[1]); if (!ino) return; group = (ino - 1) / EXT2_INODES_PER_GROUP(current_fs->super); offset = ((ino - 1) % EXT2_INODES_PER_GROUP(current_fs->super)) * EXT2_INODE_SIZE(current_fs->super); block = offset >> EXT2_BLOCK_SIZE_BITS(current_fs->super); if (!ext2fs_inode_table_loc(current_fs, (unsigned)group)) { com_err(argv[0], 0, "Inode table for group %lu is missing\n", group); return; } block_nr = ext2fs_inode_table_loc(current_fs, (unsigned)group) + block; offset &= (EXT2_BLOCK_SIZE(current_fs->super) - 1); printf("Inode %u is part of block group %lu\n" "\tlocated at block %lu, offset 0x%04lx\n", ino, group, block_nr, offset); } void do_idump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { struct ext2_inode_large *inode; ext2_ino_t ino; unsigned char *buf; errcode_t err; unsigned int isize, size, offset = 0; int c, mode = 0; reset_getopt(); while ((c = getopt (argc, argv, "bex")) != EOF) { if (mode || c == '?') { com_err(argv[0], 0, "Usage: inode_dump [-b]|[-e] "); return; } mode = c; } if (optind != argc-1) return; if (check_fs_open(argv[0])) return; ino = string_to_inode(argv[optind]); if (!ino) return; isize = EXT2_INODE_SIZE(current_fs->super); err = ext2fs_get_mem(isize, &buf); if (err) { com_err(argv[0], err, "while allocating memory"); return; } err = ext2fs_read_inode_full(current_fs, ino, (struct ext2_inode *)buf, isize); if (err) { com_err(argv[0], err, "while reading inode %u", ino); goto err; } inode = (struct ext2_inode_large *) buf; size = isize; switch (mode) { case 'b': offset = ((char *) (&inode->i_block)) - ((char *) buf); size = sizeof(inode->i_block); break; case 'x': case 'e': if (size <= EXT2_GOOD_OLD_INODE_SIZE) { com_err(argv[0], 0, "No extra space in inode"); goto err; } offset = EXT2_GOOD_OLD_INODE_SIZE + inode->i_extra_isize; if (offset > size) goto err; size -= offset; break; } if (mode == 'x') raw_inode_xattr_dump(stdout, buf + offset, size); else do_byte_hexdump(stdout, buf + offset, size); err: ext2fs_free_mem(&buf); } #ifndef READ_ONLY void do_set_current_time(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { __s64 now; if (common_args_process(argc, argv, 2, 2, argv[0], "